2017-09-10 65 views
0

工作,我有一个Laravel 5的任务,我安排每天的指定时间范围之间运行:Laravel任务调度程序不是指定的时间范围

$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

您有冲突的规则。

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

日报()将在每天午夜运行任务。之间 ()限制到只有某些小时之间运行任务(基本上是次要条件)。

所以规则之间你会做它,所以它永远不会运行,因为它将只在午夜运行,那么它会失败条件的。

使用dailyAt('14:00')而不是daily()->between()

+0

哦,我看到的,但它不能保证在14:00因为服务器上的cron作业设置为运行每半小时运行,所以它可能永远不会14:00任务运行时? – user3574492

+0

0,30意味着14:00和14:30作为0,30表示在0分钟30分。 – Devon

+0

有呀!谢谢! – user3574492