gpt4 book ai didi

php - 如何确保 sql 表未锁定/停止并发 cron

转载 作者:行者123 更新时间:2023-11-29 13:57:57 24 4
gpt4 key购买 nike

我有一个每隔几分钟运行一次的 cron 作业,它会遍历“待办事项”列表中的前 50 项,在每个项目上运行一个脚本,并将其标记为在数据库中运行。

这一直运行良好,直到将项目标记为完整的表被某些东西锁定并且项目没有被标记为止。然后 cron 再次运行并执行相同的 50 项。

这个过程不断重复,直到 mysql 中的进程列表非常庞大,并且每隔几分钟就会增大 50 个。

我怎样才能阻止这种情况发生?我的想法是:

  • 在脚本中添加代码,以在再次运行之前查看 cron 是否仍在运行
  • 在运行新的 SELECT 查询以获取接下来的 50 项之前,检查 mysql 表中是否有锁定的表

它们似乎都有起伏,我不知道如何正确实现。有人有任何建议/更好的想法吗?

最佳答案

您可以采取多种方法。

  1. 修改表以跟踪状态。例如待办事项、开始、完成。并且只处理“ToDo”。在将任务标记为“已开始”之前,不要开始任务。您需要创建一种方法来重新启动任务,以防 cron 作业失败。

  2. 如果您无法将任务标记为完成,请使用事务并回滚任务内容。

  3. 同步 cron 作业的执行,一次只允许执行一次。为此,您可以锁定文件。在开头检查文件,如果无法获得锁定,则退出。

  4. 让 cron 作业以休眠的方式永远运行,而不是定期执行。

关于php - 如何确保 sql 表未锁定/停止并发 cron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15530576/

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