使用sleep()或cron作业

时间:2009-06-25 15:33:07

标签: php performance cron

我有这个邮件脚本我必须运行几次。 要启动脚本,我将使用cron,但脚本必须运行2或3次(相隔一小时)。

最好的方法是什么? 要使用sleep命令一小时,或者在脚本结束时,请放置一些代码,以便脚本创建一个新的cron作业,以便在一小时后自行运行它?

由于

4 个答案:

答案 0 :(得分:7)

除非在保持脚本在内存中运行方面节省一些成本,否则最好根据需要每小时使用cron调用它。

0 0-2 * * * /usr/local/bin/mail-script.php

您可以使用 - 语法或逗号语法选择多个小时:

0 0,1,2,3 * * * /usr/local/bin/mail-script.php

如果需要维护某种形式的状态,请使用临时文件来保存状态。

执行:

> man 5 crontab

查看你的* nix是否处理上述情况。

最后,除非您知道脚本必须仅运行 2-3次,否则最好在PHP脚本本身中设置是否“运行或不运行”的逻辑,然后每小时运行一次。

答案 1 :(得分:2)

使用sleep()的一个优点是它可以更加轻松。例如,在我使用的许多系统上,不允许用户拥有自己的cron作业 - 因此编写程序来处理自己的计时器可能是一个优势。

sleep()的替代方法可能是使用SIGALRM(因此您的脚本会捕获中断并以特定间隔执行代码 - 当抛出该中断时。)

我的意思是,我建议使用cron - 但这里有一些替代品!

答案 2 :(得分:0)

我不确定任何一种方法(睡眠一小时,或者从php创建cron作业)都是理想的,无论如何每小时运行一个cron作业怎么样,那么你的php脚本会检查它是否应该运行?

答案 3 :(得分:0)

为什么不设置cron标准,以便触发那些特定时间? Cron在这方面非常灵活。

更新您的问题时,您希望它能够启动,我可以举一个例子。