Php 如何确保sql表未锁定/停止并发cron
我有一个cron作业,每隔几分钟运行一次,它遍历“待办事项”列表上的前50项,对每个项运行一个脚本,并将其标记为在数据库中运行 这一直很有效,直到将项目标记为完整的表被某个东西锁定,并且项目没有标记出来。然后,cron再次运行并检查了相同的50项 这一过程不断重复,直到mysql中的进程列表非常庞大,并且每隔几分钟就增加50个 我怎样才能阻止这一切? 我的想法是:Php 如何确保sql表未锁定/停止并发cron,php,mysql,cron,cron-task,Php,Mysql,Cron,Cron Task,我有一个cron作业,每隔几分钟运行一次,它遍历“待办事项”列表上的前50项,对每个项运行一个脚本,并将其标记为在数据库中运行 这一直很有效,直到将项目标记为完整的表被某个东西锁定,并且项目没有标记出来。然后,cron再次运行并检查了相同的50项 这一过程不断重复,直到mysql中的进程列表非常庞大,并且每隔几分钟就增加50个 我怎样才能阻止这一切? 我的想法是: 在再次运行之前,向脚本添加代码以查看cron是否仍在运行 在运行新的SELECT查询以获取接下来的50项之前,检查mysql表中锁
- 在再次运行之前,向脚本添加代码以查看cron是否仍在运行
- 在运行新的SELECT查询以获取接下来的50项之前,检查mysql表中锁定的表
有人有什么建议/更好的主意吗?你可以采取几种方法
将锁文件添加到更新shell脚本中。1) 检查锁是否存在:退出否则创建锁2)执行工作3)移除锁非常感谢这些,我认为选项1是我最好的选择,尽管它需要额外的SQL调用。它将增加额外的功能,使人们能够随时查看正在进行的项目。