2017-09-10 75 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