问题
如果我使用 sleep(300);
在 5 分钟的间隔内完成一整天(24 小时),是否可以正常工作?
这意味着,set_time_limit (86400);
会起作用吗?
然后我可以将主机的时间表设置为每 24 小时仅使用一次。
信息
我在 this question 上找到了我现在正在做的事情现在我每 5 分钟用它做一些事情。它运作良好,准时,甚至秒数都正确。 (谈论每个 sleep
之间的间隔)- 它休眠 3 次,然后再次从我的主机调度中调用。
我在我的主机上每 15 分钟设置了一个计划任务,问题是这不是每(精确)15 分钟发生一次,而是更像是 16 分钟和一点点 - 几个小时后它完全没有了同步。
如果可以使用它在24小时内不退出,那么我可以调整代码中的sleep,使其恰好每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
这就是我得到的。
最佳答案
如果您使用 set_time_limit(0);
,代码将永远不会超时并永远运行,除非它先退出。例如,我在 while(1) { ... }
循环中用 PHP 编写程序。它连续运行了大约两周(然后由于一些不相关的原因我不得不重新启动计算机)。
不过,Cron 通常是准确的。如果您的主机的 cron 如此不同步,您应该联系他们并询问 - 这是不正常的。
编辑:此外,您可能需要考虑永久运行它并手动启动它,然后执行一个 cron 任务来检查它是否仍在运行,如果没有则重新启动它。
关于PHP set_time_limit 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518439/