我的Laravel应用程序中有一个特殊功能,我想每天在凌晨1点,9点,1点和6点触发。
我尝试为同一命令创建两次单独的时间表。
$schedule->command('command:commandname')->twiceDaily(1, 9);
$schedule->command('command:commandname')->twiceDaily(13, 18);
但这没用。
答案 0 :(得分:0)
考虑使用->at()
:
$schedule->command('command:commandname')
->at('01:00')
->at('09:00')
->at('13:00')
->at('18:00');
答案 1 :(得分:0)
您可以使用cron()
方法将其指定为自定义时间表:
$schedule->command('command:commandname')->cron('0 1,9,13,18 * * *');
如果小时数不是您的四个小时之一,您也可以每小时运行一次,并让命令的代码提前返回。
public function handle() {
if(!in_array(now()->hour, [1, 9, 13, 18])) {
return;
}
// the rest of your command
}
(您可能需要谨慎使用此方法。如果其他作业在该作业运行前一个多小时运行,则可能会将其执行时间推迟到下一个小时,跳过它。不太可能,但要考虑一些。)