我有这个邮件脚本我必须运行几次。 要启动脚本,我将使用cron,但脚本必须运行2或3次(相隔一小时)。
最好的方法是什么? 要使用sleep命令一小时,或者在脚本结束时,请放置一些代码,以便脚本创建一个新的cron作业,以便在一小时后自行运行它?
由于
答案 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在这方面非常灵活。
更新您的问题时,您希望它能够启动,我可以举一个例子。