假设我有一个网站,当访问时,显示今天你的幸运字.问题是每个单词都可以只为一个人幸运,所以你需要快速访问网站.以下是带有幸运字的示例表:
+---------------------+ | lucky_word | +---------------------+ | cat | | moon | | piano | | yellow | | money | +---------------------+
我的问题是:如何防止两个(或更多)用户同时访问该表.我假设每个用户从现有表中读取第一个lucky_word,并且立即删除所选单词,因此它不会是下一个用户的幸运单词.例如,我想避免将猫展示给多个访客.
解决方法
您可以在
transaction内使用
locking read;例如,使用PDO:
$pdo = new PDO('MysqL:charset=utf8;dbname='.dbnAME,USERNAME,PASSWORD); $pdo->beginTransaction(); $word = $pdo->query('SELECT lucky_word FROM myTable LIMIT 1 FOR UPDATE') ->fetchColumn(); $pdo->prepare('DELETE FROM myTable WHERE lucky_word = ?') ->execute(array($word)); $pdo->commit();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。