使用 queue delay 總是超過設定時間,不知為何?
各位好,我之前寫的專案被說出有個問題,我有一個Job用來將網頁轉成PDF
那我觸發這個工作後,先把它放在Queue中,希望延遲10分鐘 (10*60sec)在來運作這個工作
$job = (new TurnPageToPDF($order))->onQueue('PDF')->delay(10 60);$this->dispatch($job);
可是每次當這個工作開始運行都已經過了20幾分鐘了
遲遲找不出原因
而我所使用queue的設定如下
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
當上面的程式執行後,我會在我的資料表中看到
http://ppt.cc/HZpGI@.jpg
程式的確有把工作放到database的 jobs 資料表中
可是不論我怎麼樣想要去觸發這個工作就是沒反應php artisan queue:work --daemon --queue="PDF"
而這個工作就會在超過十分鐘,大約20幾分鐘之後才被我的supervisor觸發 ....
[program:worker-test]
command=php /var/www/project/artisan --env=production queue:work --daemon --queue="PDF"
autostart=true
autorestart=true
stderr_logfile=/var/log/lara_PDF_queue.err.log
stdout_logfile=/var/log/lara_PDF_queue.out.log
真的不知道為什麼,不知道有沒有前輩可以指導一下
感激不盡
关于 LearnKu
->delay(10 60);,->delay(10 * 60);?试试
->delay(Carbon::now()->addMinutes(10));應該不是這個問題,因為在job裡面有的欄位是available_at 跟 created_at
然後這兩個欄位的值都沒有錯誤,available_at 得值是 created_at得值 加上十分鐘
而且我也嘗試過您所說的方式,也是無解 ...
不知道有沒有其他人遇過同樣的問題