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