如何每两分钟运行一次每秒cron作业

问题描述:

我必须在我的托管提供商处设置一个cron作业。如何每两分钟运行一次每秒cron作业

此cron作业需要每秒运行一次。这不是密集的,只是做一个检查。

但是托管服务提供商只允许每两分钟运行一次cron作业。 (不能更改托管顺便说一句)

所以,我不知道如何去做这件事?

我的想法到目前为止: 如果它只能运行每两分钟,我需要让它每秒运行两分钟。 1)如何让脚本每秒执行一次函数运行两分钟?

但重要的是没有中断。 2)我必须确保它运行顺畅,并且始终保持活跃。

也许我也可以尝试让它永远运行,并每隔两分钟运行一次cron作业检查它是否在运行? 3)这可能吗?

我的朋友提到使用多线程来确保它每秒运行一次。 4)对此有何评论?

感谢您的任何建议。我正在使用ZF。

方法#3是标准解决方案。例如,您可以让cron作业在每次运行时触摸一个文件。然后在启动时,您可以检查该文件是否最近被触摸过,如果它已经立即退出。否则开始运行。 (其他方法包括使用文件锁定,否则将pid写入文件并在启动时检查该pid是否存在并且是预期的程序。)

至于一秒超时,我建议在最后调用usleep的查询,提供从现在开始到下一次运行时的毫秒数。如果你经常睡眠,那么你实际上每秒钟运行次数不会超过一次,因为睡眠有时会持续时间超过预期,而你的检查需要时间。只要您的支票在一秒钟内运行,这应该可以正常工作。

我不认为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