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