Laravel 5.2:如何在一天内多次安排Command

时间:2017-01-22 10:02:10

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我通过调度程序使用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的最佳实践。

2 个答案:

答案 0 :(得分:9)

为什么不定义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);
}

答案 1 :(得分:4)

对于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;
          });