Laravel - 仅在相同的上一个任务完成时运行计划任务

时间:2016-10-23 20:09:59

标签: php laravel-5

我想知道Laravel是否具有内置功能,只有在前一个任务完成时才运行预定任务。

我需要每隔几秒运行一次特定任务,但该任务依赖于查询可能在某些时候失去连接的另一台主机。

如果没有,我有几种方法可以做到这一点:

  1. 让任务将作业放入队列
  2. 保存一个标志(作为文件或在数据库中),在任务开始时设置,在结束时取消设置。
  3. 只是希望任务调度程序在我走下这两条路线之前已经内置了......

1 个答案:

答案 0 :(得分:1)

在Docs:D

中找到答案

https://laravel.com/docs/5.3/scheduling

摘录:

防止任务重叠

默认情况下,即使先前的任务实例仍在运行,也会运行计划任务。为防止这种情况,您可以使用withoutOverlapping方法:

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

在此示例中,emails:send Artisan命令将每分钟运行一次,如果它尚未运行。如果您的任务执行时间变化很大,则withoutOverlapping方法特别有用,这使您无法准确预测给定任务将花费多长时间。