Laravel Scheduler:除了给定时间外每x小时运行一次

时间:2017-12-26 13:34:50

标签: php laravel

我知道我们可以为每个X个别时间指定某些任务,例如以下每两个小时后运行一次:

$schedule->command('catalog:update')->cron('0 */2 * * *');

但是,我需要每两小时运行一次但仍能排除某些时间。例如,Scheduler应该每两个小时运行一次我的任务,但不会在这些时间之间运行:上午12点到凌晨5点

我在考虑将当前时间检查登录到任务本身,这可能有用。是否有其他更好或特定于laravel的方式?

感谢您的帮助/建议

2 个答案:

答案 0 :(得分:3)

Laravel Schedulerhourly()unlessBetween()一起使用。

  

unlessBetween方法可用于在一段时间内排除任务的执行

一个例子:

->hourly()->unlessBetween('00:00', '5:00');

https://laravel.com/docs/5.5/scheduling#schedule-frequency-options

答案 1 :(得分:0)

为了执行命令,除了在上午12点到早上5点之间的持续时间,只需要反思它。仅在凌晨5点到12点之间使用between关键字执行命令。

您可以使用哪个限制任务在开始和结束时间之间运行,如

$schedule->command('test')->cron('0 */2 * * *')->between('5:00', '00:00');