我们基于Zend 1的系统有一个作为后台进程运行的后台进程,用于每小时检查用户是否过期,如果是,系统会向这些过期的用户发送验证邮件。PHP上的任务/作业调度
的代码是非常简单的:
while(1) {
$worker = ... //get verification worker
$worker->run();
sleep(3600); //run hourly
}
我们想寻找有免费的工具,更好的方法来替换此代码在系统调度工作。 Zend Job Queue是非常好的方法,但它是商业的。
我下面的两个思维方法作为Zend的作业队列替代:
相反运行的守护进程,在crontab来每小时运行PHP脚本配置cron作业,但我不知道它是否是上面更好的代码与否。
在nodejs服务器上运行node cron直接调用PHP脚本。
我也看过Gearman和beanstalked他们是否支持作业调度,但真的很难在这方面。
请建议是否有更好的方法来安排PHP任务。
使用本地'crontab';长时间运行的PHP脚本往往会在特定的时间点失败。 '睡(3600);'也不准确。 – DanFromGermany 2014-09-03 10:23:40
@DanFromGermany:感谢您的评论,除了长时间PHP运行在特定时间点往往会失败,在这种情况下是否还有其他哪些crontab更适合?我对这个东西很新,我的情况确实需要准确的时间点。 – 2014-09-03 10:32:16
'crontab'很容易维护(你可以使用'/ etc/cron.d'文件夹对作业进行分组),它在时间上是准确的(我见过的最大时间为1秒)。我在一台使用crontab的服务器上运行了几百个cronjob,并且所有的工作都很好。 – DanFromGermany 2014-09-03 10:33:46