因为我已经安装了cron每分钟运行相同的脚本。同时,脚本会执行几次。
有这样的一部分:
$query = mysql_query("select distinct `task_id` from tasks_pending where `checked`='0' and `taken`='0' limit 50");
然后,获得的值设置为“take = 1”
由于请求同时执行多个进程,因此返回不同进程的相同数据。是否有可能以某种方式禁用她的这段时间才能只执行一个过程?
抱歉英语不好。
答案 0 :(得分:2)
使用SELECT FOR UPDATE,它会阻止另一个进程在更新之前选择相同的行
答案 1 :(得分:1)
您可能希望在对表执行任何操作之前锁定表,然后使用[UN]LOCK TABLES
语句将其解锁。
否则,您可以在事务范围内使用SELECT FOR UPDATE
查询。