2017-01-22 10 views
2

日にコマンドを複数回にスケジュールする方法、私は次のコードでコマンドを呼び出すことができます。Laravel 5.2:私は5.2のコマンドスケジューラ経由laravelを使用しています

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

しかし、今私は毎日上記のコマンド呼び出したいです誰かがlaravelのベストプラクティスを提案することができ、機能、何とか動作していないときに、15など

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

コード上:45,10:6異なる時間は8:45、午前9時15分、9すなわち。

答えて

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

であるように私は、あなたがwhen()機能で何かができると確信しているこれが唯一の方法ですこれがベストプラクティスだとは思わないでください。 –

+0

@AwnAliには、15分ごとのような間隔のためのより良い方法があります。私は 'dailyAt()'と同様のメソッドのソースコードを見てきましたが、もっと良い解決策はありません。 –

+0

ありがとうございますが、もしあればもっと良い解決策を探しています。 –

1

Laravel 5.5についてbetween()機能があります。それはLaravel 5.2のためにあなたを行うことはありません確かにdocumented here

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

だが、それはまたdocumented for v5.2

$schedule ->command('foo') 
      ->everyThirtyMinutes() 
      ->when(function() { 
       return date('H') >= 8 && date('H') <= 11; 
      });