$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();
我使用命令 PHP Artisan schedule:run 运行这些 Schulder,并且我并行运行许多实例。 我的日志文件显示 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
只需调用 name(( 来命名您的任务,并链接定义任务何时运行的方法。
$schedule->call(function () {
//Some Code
})->everyFiveMinutes()
->name('some_name')
->withoutOverlapping();
对于匿名函数,需要名称以防止重叠。
因为这些是不同的任务,例如,当每五分钟计划一次任务时,withoutOverlapping
工作,并且需要超过5分钟才能完成,因此在旧任务完成之前,它不会启动同一任务的另一个实例,