2017-01-22 5 views
2

я использую Laravel 5.2 команды с помощью планировщика, я могу вызвать команду на следующий код:Laravel 5.2: Как Плановая несколько раз в день

$schedule->command('command:name') 
       ->dailyAt('08:55'); 

, но теперь я хочу, чтобы позвонить выше команды ежедневно шесть различных времен, то есть 8:45, 9:15, 9: 45,10: 15 и т.д.

$schedule->command('command:name') 
      ->when(function(){return true;}); 

Над кодом, с тем, когда функция не работает так или иначе, кто-то может предложить лучшие практики Laravel.

ответ

5

Почему бы не просто определить 4 задачи, это просто и читаем:

$schedule->command('command:name')->dailyAt('08:55'); 
$schedule->command('command:name')->dailyAt('09:15'); 
$schedule->command('command:name')->dailyAt('09:45'); 
$schedule->command('command:name')->dailyAt('10:15'); 

Кроме того, вы можете поместить его в петлю:

foreach (['08:45', '09:15', '09:45', '10:15'] as $time) { 
    $schedule->command('command:name')->dailyAt($time); 
} 
+0

это единственный способ , не думайте, что это лучшая практика. –

+0

@AwnAli есть лучшие способы для интервалов, например 'каждые 15 минут'. Я только что изучил исходный код 'dailyAt()' и подобных методов, и я не вижу лучшего решения. –

+0

Большое вам спасибо, но я просто ищу лучшее решение, если оно есть. –

1

Для Laravel 5.5 есть еще between() функция. Это documented here

$schedule ->command('foo') 
      ->everyThirtyMinutes() 
      ->between('8:45', '10:15'); 

Допустим, что не будет делать за Laravel 5.2, но я уверен, что вы могли бы сделать что-то с помощью функции when(), поскольку это также documented for v5.2

$schedule ->command('foo') 
      ->everyThirtyMinutes() 
      ->when(function() { 
       return date('H') >= 8 && date('H') <= 11; 
      }); 
Смежные вопросы