我有一个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');
不运行?
您有一个冲突的规则。
https://laravel.com/docs/5.5/scheduling
daily()设定了每天在午夜进行的任务。在()之间将任务限制为仅在一定小时之间运行(基本上是次要条件)。
因此,您之间的规则将不得不运行,因为它只会在午夜运行,然后将失败。
使用dailyAt('14:00')
代替daily()->between()