【发布时间】:2018-02-23 21:16:09
【问题描述】:
我有两个应用程序在同一台服务器上运行。
现在看来,当将withoutOverlapping() 添加到调度程序作业并通过 cron 本身管理基本 cronjob 时,这两个应用程序在执行中相互阻塞。
会这样吗?
【问题讨论】:
标签: laravel
我有两个应用程序在同一台服务器上运行。
现在看来,当将withoutOverlapping() 添加到调度程序作业并通过 cron 本身管理基本 cronjob 时,这两个应用程序在执行中相互阻塞。
会这样吗?
【问题讨论】:
标签: laravel
是的,withoutOverlapping 仅适用于每个应用程序。
Laravel 在存储文件夹中创建一个包含作业哈希的文件。这样,如果文件存在,Laravel 就知道作业仍在运行。一个应用程序不可能知道另一个应用程序当前是否正在运行作业,因为它无权访问另一个应用程序的存储文件夹。
【讨论】:
如果你的代码如下所示
$schedule->command('process:queue 0')->everyMinute()->withoutOverlapping();
$schedule->command('process:queue 1')->everyMinute()->withoutOverlapping();
这是因为具有不同参数的相同命令可能会被认为是重叠的。
即作业的哈希将只考虑命令签名。
【讨论】: