跨多个服务器的Synchonise Laravel Task Scheduler

时间:2016-06-22 19:44:23

标签: laravel laravel-5 webserver scheduled-tasks job-scheduling

我让Laravel 5.0在负载均衡器后面运行多个Web服务器。我使用laravel Scheduler定期执行和运行命令。其中大多数不是特定于服务器的命令,而是全局的(跨所有服务器的整个应用程序)。

问题是每个服务器都会执行每个命令 - 因此3个服务器意味着每小时/每分钟运行3个命令。

如何在服务器之间同步执行这些命令? Laravel有任何原生选择吗?还有其他推荐套餐吗?

发生的一个想法是依赖Laravel通过使用基于文件的互斥锁实现其无重叠功能的方式,并使用共享存储在服务器之间分发文件。可能会工作,但任何延迟都是共享存储打破了这一点 - 不够可靠。

我目前的解决方法是让命令将作业发送到队列,并将逻辑构建到作业处理程序本身,以使用DB在服务器之间同步自身。很优雅,但完成工作。

这与Laravel Task Scheduler across multiple servers without overlap

有关

1 个答案:

答案 0 :(得分:0)

你试过这个jdavidbakr/multi-server-event package吗? 此程序包管理多服务器配置的事件,以便只有一个服务器将触发已调度的事件。