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

时间:2012-06-29 10:44:21

标签: php mysql

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

有这样的一部分:

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

然后,获得的值设置为“take = 1”

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

抱歉英语不好。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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