在基于云的环境中运行PHP cronjobs

时间:2011-07-01 16:16:31

标签: php zend-framework

我正在寻找在多个服务器上运行cronjobs的PHP解决方案,并保证只有一台服务器自动运行这些cronjobs。我们只需要运行一次cronjobs,例如每日摘要电子邮件或每周报告。

现在,我们有一个安装了crontab的“主”服务器,以及只安装了apache的多个“普通”服务器。问题是,如果“主”服务器出现故障,则无人再运行cronjob。这也意味着我们需要跟踪哪个服务器是主服务器,并且它为我们创建了一些扩展问题。

是否有任何现成的php解决方案可以让多台服务器运行独特的任务?

我看过gearman(http://www.slideshare.net/felixdv/high-gear-php-with-gearman),但有点太复杂了。我只需要保证只有一个服务器外的服务器运行cronjobs。

2 个答案:

答案 0 :(得分:1)

我在脚本本身构建了并发和“运行”检查。

更新数据库或memcached中的'lock',指出上次执行时间。

如果存在该锁定,则在脚本的其他副本中保释...除非锁定太旧 如果锁已经围绕> max_execution,脚本失败或运行时间太长而且从未解锁。在这种情况下给自己发电子邮件。

请记住在脚本关闭时取消锁定。

答案 1 :(得分:0)

我不知道你是想要一个免费的解决方案还是付费的... 无论如何,我现在能想到的唯一解决方案是由IBM提供的TWS Tivoli Workload Scheduler。 据我所知,它适用于Windows或Linux / Unix机器。

http://www-01.ibm.com/software/tivoli/products/scheduler/