我想知道Laravel是否具有内置功能,只有在前一个任务完成时才运行预定任务。
我需要每隔几秒运行一次特定任务,但该任务依赖于查询可能在某些时候失去连接的另一台主机。
如果没有,我有几种方法可以做到这一点:
只是希望任务调度程序在我走下这两条路线之前已经内置了......
答案 0 :(得分:1)
在Docs:D
中找到答案https://laravel.com/docs/5.3/scheduling
摘录:
防止任务重叠
默认情况下,即使先前的任务实例仍在运行,也会运行计划任务。为防止这种情况,您可以使用withoutOverlapping方法:
$schedule->command('emails:send')->withoutOverlapping();
在此示例中,emails:send
Artisan命令将每分钟运行一次,如果它尚未运行。如果您的任务执行时间变化很大,则withoutOverlapping
方法特别有用,这使您无法准确预测给定任务将花费多长时间。