在Laravel中是否有一个功能如withoutOverlapping()但没有“如果正在运行5个命令,则不要重叠”?

时间:2019-05-24 07:25:40

标签: php laravel scheduling

我正在使用Laravel的调度程序来运行一些命令,但有时该命令会花费很长时间,并且我想确保它不会向服务器发送垃圾邮件,因此我希望以某种方式执行“ Don”如果5正在运行atm,则不会运行。

1 个答案:

答案 0 :(得分:0)

确定频率时要聪明:

您可以使用多种方法来定义计划任务的频率。 参见Schedule Frequency Options

  

-> everyMinute();每分钟运行一次任务

     

-> everyFiveMinutes();每五分钟运行一次任务

     

-> everyTenMinutes();每十分钟运行一次任务...

这些方法可以与其他约束条件结合使用,以创建甚至仅在一周的某些天运行的更精细的计划:

  

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

     

-> weekends();将任务限制为周末..

您可以像下面这样菊花链:

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

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

最后:

如果仍然无法避免多个命令以相同的间隔运行,那么可以指定它们不重叠(即不同时)运行:

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