如果我有一个每分钟运行一次的 cron 作业,并且第一次迭代运行 62 秒,那么第二次迭代会等到第一次出现结束,还是会发生相同的 cron 作业同时运行?
为了说明这一点,请参见场景 1:
|0 |60 |120 |180 |240 |300
------ Cron Job 1 Taking 60 Seconds
--------- Cron Job 2 Taking 90 Seconds
------ Cron Job 3 Taking 90 Seconds but overlapping with the previous cron job
以上是会发生什么,还是场景2会发生:
|0 |60 |120 |180 |240 |300
------ Cron Job 1 Taking 60 Seconds
--------- Cron Job 2 Taking 90 Seconds
XXX-------Cron Job 3 waiting til the next 1 minute interval starts
我担心会有一段 30 秒标记为 XXX 的时间段不会运行 cron 作业。
我想完成什么?我想无限期地每秒执行一个 PHP 脚本。它不必每秒运行一次,但它必须运行、结束、运行、结束、运行、结束。如果一个迭代需要 5 秒,它只能在第一个结束后开始下一个。但它绝不能停止。问题是我无法确定迭代的长度。一次迭代可能需要 1 秒,也可能需要 5 秒,甚至更长。
- cron可以做到这一点吗?这样我就可以保证脚本无论如何都会每秒运行一次?
- 如果不是,我怎么能保证一个 PHP 脚本无限期地运行,一个又一个迭代?