我正在寻找在多个服务器上运行cronjobs的PHP解决方案,并保证只有一台服务器自动运行这些cronjobs。我们只需要运行一次cronjobs,例如每日摘要电子邮件或每周报告。
现在,我们有一个安装了crontab的“主”服务器,以及只安装了apache的多个“普通”服务器。问题是,如果“主”服务器出现故障,则无人再运行cronjob。这也意味着我们需要跟踪哪个服务器是主服务器,并且它为我们创建了一些扩展问题。
是否有任何现成的php解决方案可以让多台服务器运行独特的任务?
我看过gearman(http://www.slideshare.net/felixdv/high-gear-php-with-gearman),但有点太复杂了。我只需要保证只有一个服务器外的服务器运行cronjobs。
答案 0 :(得分:1)
我在脚本本身构建了并发和“运行”检查。
更新数据库或memcached中的'lock',指出上次执行时间。
如果存在该锁定,则在脚本的其他副本中保释...除非锁定太旧 如果锁已经围绕> max_execution,脚本失败或运行时间太长而且从未解锁。在这种情况下给自己发电子邮件。
请记住在脚本关闭时取消锁定。
答案 1 :(得分:0)
我不知道你是想要一个免费的解决方案还是付费的... 无论如何,我现在能想到的唯一解决方案是由IBM提供的TWS Tivoli Workload Scheduler。 据我所知,它适用于Windows或Linux / Unix机器。