Laravel 5.2:如何在一天内多次调度命令

3htmauhk  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(99)

我通过调度器使用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的最佳实践吗?

rqdpfwrv

rqdpfwrv1#

为什么不直接定义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);
}
qvtsj1bj

qvtsj1bj2#

在Laravel 5.5中有一个between()函数。这里有记录

$schedule ->command('foo')
          ->everyThirtyMinutes()
          ->between('8:45', '10:15');

当然,这在Laravel 5.2中是行不通的,但我相信你可以用when()函数做些什么,因为它也是在5.2版中记录的

$schedule ->command('foo')
          ->everyThirtyMinutes()
          ->when(function () {
              return date('H') >= 8 && date('H') <= 11;
          });
b4wnujal

b4wnujal3#

你可以使用cron来设置自定义时间;
https://laravel.com/docs/8.x/scheduling#schedule-frequency-options
示例:周一至周五每天上午9点、下午1点和下午5点

foreach (['0 9 * * 1-5', '0 13 * * 1-5', '0 17 * * 1-5'] as $time) {
        $schedule->command('command:name')->cron($time);
    }

你可以使用https://crontab.guru来精确地获取自定义时间。

相关问题