我正在使用Laravel的调度程序来运行一些命令,但有时该命令会花费很长时间,并且我想确保它不会向服务器发送垃圾邮件,因此我希望以某种方式执行“ Don”如果5正在运行atm,则不会运行。
答案 0 :(得分:0)
确定频率时要聪明:
您可以使用多种方法来定义计划任务的频率。 参见Schedule Frequency Options
-> everyMinute();每分钟运行一次任务
-> everyFiveMinutes();每五分钟运行一次任务
-> everyTenMinutes();每十分钟运行一次任务...
这些方法可以与其他约束条件结合使用,以创建甚至仅在一周的某些天运行的更精细的计划:
->平日();将任务限制为工作日
-> weekends();将任务限制为周末..
您可以像下面这样菊花链:
$schedule->call(function () {
//
})->weekly()->mondays()->at('13:00');
因此,您应该仔细决定要如何以及何时运行命令。不要以相同的间隔运行每个命令。
最后:
如果仍然无法避免多个命令以相同的间隔运行,那么可以指定它们不重叠(即不同时)运行:
$schedule->command('emails:send')->withoutOverlapping();