以多个时间间隔运行Laravel CRON调度程序

以多个时间间隔运行Laravel CRON调度程序,laravel,cron,schedule,Laravel,Cron,Schedule,我在我的Laravel应用程序中有一个特殊的功能,我想每天在凌晨1点、9点、下午1点和6点触发 我尝试为同一命令创建单独的计划2次 $schedule->command('command:commandname')->twiceDaily(1,9); $schedule->command('command:commandname')->twiceDaily(13,18); 但是这不起作用。考虑使用->at(): 您可以使用cron()方法将其指定为自定义计划: $schedule->co

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

我尝试为同一命令创建单独的计划2次

$schedule->command('command:commandname')->twiceDaily(1,9);
$schedule->command('command:commandname')->twiceDaily(13,18);
但是这不起作用。

考虑使用
->at()

您可以使用
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
}

(你想对这个方法小心一点。如果其他工作在运行之前运行一个多小时,它可以将它的执行推到下一个小时,这将使它跳过。不太可能,但要考虑的事情。)

使用这个只运行最后一个链接->()。
public function handle() {
    if(!in_array(now()->hour, [1, 9, 13, 18])) {
        return;
    }

    // the rest of your command
}