Laravel 5 - 没有重置的任务时间表不起作用

Hus*_*fli 6 laravel laravel-5 laravel-5.1

我尝试在Laravel 5上运行计划.当我运行它时它的工作正常:

$schedule->call(function() {
   // do something here..
})->everyMinute();
Run Code Online (Sandbox Code Playgroud)

但是当我添加时withoutOverlapping(),调度程序从不运行任务:

$schedule->call(function () {
   // do something here..
})->everyMinute()->name('job_name')->withoutOverlapping();
Run Code Online (Sandbox Code Playgroud)

*这些计划代码写在/app/Console/Kernel.php

Yev*_*yev 9

顺序很重要,但从未提及。

尝试这个

$schedule->call(function () {
   // do something here..
})->name('job_name')->withoutOverlapping()->everyMinute();
Run Code Online (Sandbox Code Playgroud)

这对我来说是这样的:

(1)呼叫->(2)名称->(3)不重叠->(4)每天在->(5)onOneServer

当您弄乱订单时,您会得到类似的错误

需要计划的事件名称以防止重叠。name在“ withoutOverlapping”之前使用该方法。

要么

调用未定义的方法Illuminate \ Console \ Scheduling \ Schedule :: name()

  • 这就是答案!如前所述,名称和顺序很重要(在纪录片中没有明确提及)。谢谢@Yev :) (2认同)

Viz*_*rei 6

->everyMinute()使用时->withoutOverlapping(),删除仍然会每分钟运行一次,但不会重叠。

更新

从Laravel v。5.5+开始,您可以指定“无重叠”锁到期之前必须经过的分钟数。

例如。->withoutOverlapping(10)10分钟过去后,可用于解锁“重叠”。

  • 我很高兴您编辑了答案,它适合问题,但在基础级别上仍然不正确。您在 `->withoutOverlapping(10)` 中设置的参数不能替代设置时间表。这个参数不够灵活,比如`->dailyAt(...)`不会被替换。请参阅我的回答以获取有关如何在链中使用两个 setter 的说明。干杯。 (2认同)