Laravel任务计划程序跨多个服务器没有重叠

时间:2015-11-02 19:37:13

标签: php laravel laravel-5.2

我想知道是否有人有任何使Laravel任务计划程序工作而不会在多个服务器上重叠的经验。

将其置于上下文中:我在负载均衡器后面有3个API服务器。我知道任务调度程序允许在单个服务器上使用withoutOverlap标志,但是我如何在所有服务器上使用相同的主体?我只想要一台服务器来运行计划任务,让另外两台服务器不运行它们。

据我所知,我的选择是:

从2台服务器中删除crontab。我的服务器是自动化的,不希望从任何服务器上删除crontab作业,因为这会使我的自动构建变得复杂。

编写一个使用数据库的程序包,将任务限制为仅运行的第一台服务器。 我可以做到这一点,但我想知道它是否已经完成(在谷歌上找不到任何东西)

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

一个人已经实现了它。看看这个作曲家包 https://packagist.org/packages/jdavidbakr/multi-server-event

答案 1 :(得分:1)

此功能自Laravel 5.6+起即可用。

对于docs,您可以使用onOneServer函数来实现它,就像这样……

$schedule->command('report:generate')
            ->fridays()
            ->at('17:00')
            ->onOneServer();