多次运行Laravel CRON调度程序

时间:2019-10-03 11:23:55

标签: laravel cron schedule

我的Laravel应用程序中有一个特殊功能,我想每天在凌晨1点,9点,1点和6点触发。

我尝试为同一命令创建两次单独的时间表。

$schedule->command('command:commandname')->twiceDaily(1, 9);
$schedule->command('command:commandname')->twiceDaily(13, 18);

但这没用。

2 个答案:

答案 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
}

(您可能需要谨慎使用此方法。如果其他作业在该作业运行前一个多小时运行,则可能会将其执行时间推迟到下一个小时,跳过它。不太可能,但要考虑一些。)