【发布时间】:2015-09-21 16:36:38
【问题描述】:
很抱歉,如果之前有人问过这个问题,但是我在搜索时找不到任何相关内容。
我目前有一个 PHP 脚本,它轮询数据库以获取下一条尚未更新的记录。我的问题是:如果我随后更新数据库以显示记录正在处理,而 cron 作业正在运行(大约需要 30 秒),并且 cron 作业设置为每秒运行一次,则 cron 作业在第 1 秒运行,但该作业会在 cron 作业第二次运行之前等待完成,还是会在第二次 2 运行?
谢谢
【问题讨论】:
-
一个 cron 计划的最短时间肯定是一分钟吗?
-
不,cron 作业将按计划运行,如果它们重叠,则由您的代码来处理事情,cron 不关心之前的作业是否仍在运行
-
可能有更好的方法来完成我想要做的事情 - 我正在构建一个拥有多个用户的系统,每个用户都有一个在线销售渠道,例如亚马逊。我需要能够不断地轮询每个账户的订单,最好是同时轮询,但是如果其中一个账户有大量订单并且需要超过一分钟才能返回我的所有数据页面脚本,我不希望所有其他帐户在下载该帐户的订单时停止轮询,如果这有意义吗?
-
没问题,安排 cron 作业“选择、更新”下一个可用的“订单”。将其标记为正在处理并将其提交到数据库。然后处理订单。下一个
cron job会找到一个新订单或者什么都没有。 -
是的,这就是我正在考虑做的事情,所以每个帐户都会处于待处理状态,然后处理,然后完成,所以它第一次运行时会发现用户 1 处于待处理状态,并将其更改为正在处理。第二次它会发现用户 2 为待处理,因为用户 1 当前正在处理,等等。