2016-01-01 4 views
4
$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 2 начинается второй раз, даже его предыдущий экземпляр еще не завершил его.withoutOverlapping() не работает в Laravel Schedule

[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 
+0

Что вы хотите сделать с методом 'withoutOverlapping'? –

+0

Я использую 3 длительных планировщика времени, чтобы сказать S1, S2 и S3, и мой сервер отключается из-за этих планировщиков. I не хочу запускать какой-либо планировщик, разрешает говорить S1, если предыдущий (S1) не завершен. –

ответ

3

Просто назовите вашу задачу с вызовом имени() и цепи методов, которые определяют, когда ваша задача должна быть запущена.

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

Для анонимных функций имя требуется для предотвращения перекрытия.

+0

да это работает. –

+0

[01-Jan-2016 11:30:08 UTC] График работы 1: Начало [01-янв-2016 11:30:11 UTC] График работы 2: Начало [01-Jan-2016 11:30:13 UTC] График работы 3: Начало [01-Jan-2016 11:30:15 UTC] График работы 1: Конец [01-янв-2016 11:30:15 UTC] График работы 2: Начало [01-Jan -2016 11:30:17 UTC] Расписание линии 2: Конец , если вы видите мои журналы, расписание 2 смотрит второй раз, даже раньше оно еще не завершено. Я не вижу, что перекрытие работает. я вошел в начало и конец каждого моего расписания. –

+0

Я не вижу перекрытия работы, так как мой планировщик 2 запускает даже предыдущий экземпляр еще не завершен. Я прокомментировал вход в систему выше комментария –

 Смежные вопросы

  • Нет связанных вопросов^_^