我必须在我的托管服务提供商处设置一个cron作业。
这个cron作业需要每秒运行一次。这不是密集的,只是做检查。
托管服务提供商只允许每两分钟运行一次cron作业。 (不能改变托管顺便说一句)
所以,我对如何解决这个问题一无所知?
到目前为止我的想法: 如果它只能每两分钟运行一次,我需要让它每秒运行两分钟。 1)如何让我的脚本每秒运行两分钟运行一次?
但重要的是没有中断。 2)我必须确保它能够顺利运行并且始终保持活动状态。
也许我也可以尝试让它永远运行,每两分钟运行一次cron作业,检查它是否正在运行? 3)这可能吗?
我的朋友提到使用多线程来确保它每秒都在运行。 4)对此有何评论?
感谢您的任何建议。我正在使用ZF。
答案 0 :(得分:1)
方法#3是标准解决方案。例如,您可以让cron作业每次运行时触摸一个文件。然后在启动时,您可以检查最近是否触摸过该文件,如果已经触摸,则立即退出。否则开始跑步。 (其他方法包括使用文件锁定,或者将pid写入文件,并在启动时检查该pid是否存在并且是预期的程序。)
对于一秒超时,我建议在查询结束时调用usleep,提供从现在到下次想要运行的毫秒数。如果你经常睡觉,那么你实际上每秒运行不到一次,因为睡眠时间有时比预期的要长,你的检查需要时间。只要您的支票在一秒钟内运行,这应该可以正常工作。
答案 1 :(得分:0)
我不认为cron允许二级解析。 http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
因此,即使您的托管服务提供商允许您无法运行每秒重复的流程。但是,您可以使用watch
之类的命令来重复执行脚本。见here