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

Laravel 5.2: How to scheduled Command multiple times in a day

我正在通过调度程序使用 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;});

以上带有 when 函数的代码无法正常工作,有人可以建议 laravel 的最佳实践。

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

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