0

因为我已经安装了 cron,所以每分钟运行相同的脚本。同时一个脚本被执行多次。

有这么一段:

$query = mysql_query("select distinct `task_id` from tasks_pending where `checked`='0' and `taken`='0' limit 50");

然后,将得到的值设置为“taken = 1”

由于多个进程同时执行,请求为不同的进程返回相同的数据。是否有可能以某种方式禁用她的这部分时间,使其只能执行一个进程?

抱歉英语不好。

4

2 回答 2

2

使用SELECT FOR UPDATE它将阻止另一个进程在更新之前选择相同的行

于 2012-06-29T10:46:28.523 回答
1

您可能希望在对其进行任何操作之前锁定表,然后使用[UN]LOCK TABLES语句将其解锁。

否则,您可以SELECT FOR UPDATE在事务范围内使用查询。

于 2012-06-29T10:48:50.157 回答