有没有像没有重叠()但像"Don't overlap if 5 commands are running"在拉拉维尔这样的函数?



我正在使用Laravel的调度程序来运行一些命令,但是有时该命令需要很长时间,并且我不会确保它不会向我的服务器发送命令,所以我'm希望以某种方式做"如果5正在运行ATM,请不要运行。

在确定频率时要聪明:

您可以使用多种方法来定义计划任务的频率。请参阅时间表频率选项

- > everyminute((;每分钟运行任务

- > everyfiveminutes((;每五分钟运行任务

- > averytenminutes((;每十分钟运行任务...

这些方法可以与其他约束结合在一起,以创建更精细的调整时间表,仅在一周的某些日子里运行:

- >工作日((;将任务限制为工作日

- >周末((;将任务限制为周末。

您可以如下:

$schedule->call(function () {
    //
})->weekly()->mondays()->at('13:00');

因此,您应该仔细确定如何以及何时要运行命令。不要以相同的间隔运行每个命令。

最后:

如果您仍然无法避免以相同的间隔运行多个命令,则可以指定它们在不重叠的情况下运行(即不是同时(:

$schedule->command('emails:send')->withoutOverlapping();

最新更新