如何阻止多个进程的一段代码


How to block a piece of code for multiple processes

因为我安装了cron,每分钟运行相同的脚本。同时,脚本会执行多次。

有这样一部分:

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

然后,将获得的值设置为"take = 1"

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

对不起,英语不好。

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

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

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

相关文章: