Laravel任务调度程序无法在指定的时间范围内工作

时间:2017-09-10 15:39:27

标签: php laravel laravel-5 cron cron-task

我有一个Laravel 5任务,我计划每天在指定的时间范围内运行:

$schedule->call(function () {
             // task omitted
        })->daily()->timezone('Europe/London')->between('14:00', '15:00');

这不起作用,但是如果我使用everyMinute();将其更改为每分钟运行一次,那么它会成功运行:

       $schedule->call(function () {     
             // task omitted
        })->everyMinute();

服务器上的我的CRON设置为每半小时运行一次,因为它是一个共享主机,所以它不能运行不到半小时:

0,30    *   *   *   *   /usr/local/bin/php -q /home/username/public_html/bookings/artisan schedule:run >> /dev/null 2>&1

任何人都知道为什么第一个cron作业:daily()->timezone('Europe/London')->between('14:00', '15:00');没有运行?

1 个答案:

答案 0 :(得分:0)

你的规则存在冲突。

https://laravel.com/docs/5.5/scheduling

daily()将任务设置为每天午夜运行。 between()将任务限制为仅在特定小时之间运行(基本上是次要条件)。

所以你的规则之间的规则是这样的,所以它永远不会运行,因为它只会在午夜运行,然后它会在中间条件下失败。

使用dailyAt('14:00')代替daily()->between()