PHP set_time_limit限制

时间:2011-09-22 16:45:33

标签: php cron sleep

问题

如果我使用sleep(300);在5分钟的间隙内完成一整天(24小时),它会正常工作吗?

这意味着,set_time_limit (86400);工作吗?

然后我可以将主持人的时间表设置为每24小时只使用一次。


INFO

我在this question找到了我正在做的事情,现在每隔5分钟就用它来做一些事情。它运作良好,即使是正确的秒数也准时。 (谈论每个sleep之间的差距) - 它会睡3次然后再从主持人的日程表中调用。

我的主机每隔15分钟安排一次预定任务,问题是每次(精确)15分钟没有发生这种情况,但更像是16分钟和几分钟 - 几个小时之后它就完全没了同步。

如果可以在24小时内不使用它,那么我可以在代码中调整睡眠,使其每5分钟执行一次。


更新

17:17:50 22-09-2011 Check done!
17:34:09 22-09-2011 Check done!
17:47:47 22-09-2011 Check done!

我运行了一个附加到文件日期和“检查完成!”的脚本。 - 这是没有循环和sleep,这就是我得到的。

2 个答案:

答案 0 :(得分:2)

如果您使用set_time_limit(0);,代码将永远不会超时并永远运行,除非它首先退出。例如,我在while(1) { ... }循环中用PHP编写程序。它连续运行了大约两周(然后由于一些无关的原因我不得不重新启动计算机)。

Cron通常很准确。如果你的主机的cron不同步,你应该联系他们并询问它 - 这是不正常的。

编辑:此外,您可能想要考虑永久运行它并手动启动它,然后使用cron任务检查它是否仍在运行,如果不是则重新启动它。

答案 1 :(得分:2)

  

将set_time_limit(86400);工作?

但如果您通过Web服务器运行脚本,请不要这样做,这将在整个时间内占用连接。