withoutOverlapping()在Laravel Schedule中不起作用

Awa*_*taq 6 php job-scheduling laravel laravel-5 laravel-5.1

$schedule->call(function () 
        {
            error_log("Line Schedule 1:Start");
            //Send Email
            error_log("Line Schedule 1:End");

        })->everyFiveMinutes()->name('event_name:1')->withoutOverlapping();


        $schedule->call(function () 
        {
          error_log("Line Schedule 2:Start");
           //Send Email
          error_log("Line Schedule 2:End");
        })->everyFiveMinutes()->name('event_name:2')->withoutOverlapping();
        $schedule->call(function () 
        {
          error_log("Line Schedule 3:Start");
              //Send Email
          error_log("Line Schedule 3:End");
        })->everyFiveMinutes()->name('event_name:3')->withoutOverlapping();
Run Code Online (Sandbox Code Playgroud)

我使用命令php artisan schedule运行这些schulders:运行并且我并行运行许多实例.和我的日志文件说schulder 2第二次启动,即使它之前的实例还没有完成它.

[01-Jan-2016 11:30:08 UTC] Line Schedule 1:Start
[01-Jan-2016 11:30:11 UTC] Line Schedule 2:Start
[01-Jan-2016 11:30:13 UTC] Line Schedule 3:Start
[01-Jan-2016 11:30:15 UTC] Line Schedule 1:End
[01-Jan-2016 11:30:15 UTC] Line Schedule 2:Start
[01-Jan-2016 11:30:17 UTC] Line Schedule 2:End
[01-Jan-2016 11:30:17 UTC] Line Schedule 3:Start
[01-Jan-2016 11:30:19 UTC] Line Schedule 3:End
[01-Jan-2016 11:30:21 UTC] Line Schedule 2:End
[01-Jan-2016 11:30:21 UTC] Line Schedule 3:Start
[01-Jan-2016 11:30:22 UTC] Line Schedule 3:End
[01-Jan-2016 11:30:25 UTC] Line Schedule 3:End
Run Code Online (Sandbox Code Playgroud)

jed*_*ylo 6

只需通过调用name()来命名您的任务,并链接定义应在何时运行任务的方法。

$schedule->call(function () {
  //Some Code
})->everyFiveMinutes()
->name('some_name')
->withoutOverlapping();
Run Code Online (Sandbox Code Playgroud)

对于匿名函数,名称是必需的,以防止重叠


abd*_*edr 6

因为这些是不同的任务,withoutOverlapping例如,当每五分钟安排一个任务时,并且需要超过 5 分钟才能完成,因此在旧任务完成之前,它不会启动同一任务的另一个实例,