我有一个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');
没有运行?
答案 0 :(得分:0)
你的规则存在冲突。
https://laravel.com/docs/5.5/scheduling
daily()将任务设置为每天午夜运行。 between()将任务限制为仅在特定小时之间运行(基本上是次要条件)。
所以你的规则之间的规则是这样的,所以它永远不会运行,因为它只会在午夜运行,然后它会在中间条件下失败。
使用dailyAt('14:00')
代替daily()->between()