gpt4 book ai didi

php - MYSQL 确保两个 cronjobs 不处理相同的请求

转载 作者:搜寻专家 更新时间:2023-10-30 22:02:04 25 4
gpt4 key购买 nike

这是我的问题:

在我的数据库中,我有一个请求表,其中有一个状态字段。一个 cronjob 每分钟运行一次,寻找每个处于“待处理”状态的请求。处理完请求后,它会将状态设置为“已完成”。

有时这个 cronjob 需要一分钟以上的时间才能运行,所以两个相同的 cronjob 正在运行。我需要确保他们不会处理相同的请求。

现在我正在这样做:

$requests = db_all($this->db->query('SELECT * FROM x__mx_request WHERE status="pending"'));
//few lines of code later
$this->db->query('UPDATE x__mx_request SET status="processing" WHERE id IN('.implode(',', $ids).')');

我在选择它之后将状态设置为正在处理,这也会阻止其他脚本处理它,但是一个脚本是否可能选择所有请求,然后第二个脚本在第一个脚本将它们设置为之前选择所有请求处理?

我想要一种更安全的方法!

编辑:感谢您的出色回答,但在我将其中一个标记为正确之前,我必须实际尝试一下。

最佳答案

您可以尝试制作一个锁定/解锁文件,以便 cronjobs 可以检查“知道”作业是否正在运行。进程 pid 也可用于识别进程状态,以防出现故障、无响应等情况。

关于php - MYSQL 确保两个 cronjobs 不处理相同的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10487039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com