Laravel任务调度命令频率延迟或偏移

时间:2018-04-06 23:47:57

标签: laravel-5 laravel-5.4

有没有办法从建议的频率选项中延迟或偏移预定的命令?

e.g:

$schedule->command('GetX')->everyTenMinutes(); --> run at 9:10, 9:20, 9:30
$schedule->command('GetY')->everyTenMinutes(); --> run at 9:15, 9:25, 9:35

1 个答案:

答案 0 :(得分:0)

在安排任务时没有delay功能。

when方法可用于每10分钟安排一次任务,延迟5分钟

// this command is scheduled to run if minute is 05, 15, 25, 35, 45, 55
// the truth test is checked every minute
$schedule->command('foo:bar')->everyMinute()->when(function () {
    return date('m') - 5 % 10 == 0;
});

遵循此规则,您可以每 x 分钟安排一项任务,延迟 y 分钟

$schedule->command('foo:bar')->everyMinute()->when(function () {
    return date('m') - y % x == 0;
});

如果变得困难,可以直接编写自定义Cron计划。当您稍后阅读代码时,这是更容易理解而不会头疼的方法。

$schedule->command('foo:bar')->cron('05,15,25,35,45,55 * * * *');