有没有办法从建议的频率选项中延迟或偏移预定的命令?
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
答案 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 * * * *');