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

时间:2011-02-03 07:47:54

标签: hosting cron

我必须在我的托管服务提供商处设置一个cron作业。

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

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

所以,我对如何解决这个问题一无所知?

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

但重要的是没有中断。 2)我必须确保它能够顺利运行并且始终保持活动状态。

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

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

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

2 个答案:

答案 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