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

Awn*_*Ali 3 laravel laravel-5 laravel-5.1 laravel-5.2 laravel-5.3

我通过调度程序使用laravel 5.2命令,我可以通过以下代码调用该命令:

$schedule->command('command:name')
                ->dailyAt('08:55');
Run Code Online (Sandbox Code Playgroud)

但是现在我想在六个不同的时间每天拨打上面的命令,即8:45,9:15,9:45,10:15等

$schedule->command('command:name')
            ->when(function(){return true;});
Run Code Online (Sandbox Code Playgroud)

上面的代码,当功能,不能以某种方式工作,有人可以建议laravel的最佳实践.

Ale*_*nin 12

为什么不定义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');
Run Code Online (Sandbox Code Playgroud)

此外,你可以把它放在一个循环中:

foreach (['08:45', '09:15', '09:45', '10:15'] as $time) {
    $schedule->command('command:name')->dailyAt($time);
}
Run Code Online (Sandbox Code Playgroud)


car*_*rse 6

对于 Laravel 5.5,有这个between()功能。它记录在这里

$schedule ->command('foo')
          ->everyThirtyMinutes()
          ->between('8:45', '10:15');
Run Code Online (Sandbox Code Playgroud)

当然,这对 Laravel 5.2 不起作用,但我相信你可以用这个when()函数做一些事情,因为v5.2也有记录

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