由於業務需求改變,需要修改之前寫好的佇列
在執行 php artisan queue:work 命令過程中,佇列執行如下所示
佇列處於一直執行的狀態
在檢視官方文件佇列中,我看到錯誤處理中
如果在任務執行的時候出現異常,任務會被自動釋放到佇列中以再次嘗試。
通過查詢日誌內容,是因為寫的佇列內部程式有報錯,所以導致了佇列處於一直嘗試執行的狀態。
解決方案:
在執行php artisan queue:work 命令時可以通過 Artisan 命令的 –tries 選項 指定最大嘗試次數,以防止佇列一直重複執行。
或者在佇列類中新增public $tries變數定義最大嘗試次數
<?php
namespace App\Jobs;
class ProcessPodcast implements ShouldQueue
{
/**
* 任務可以嘗試的最大次數。
*
* @var int
*/
public $tries = 5;
}
還可以通過捕捉錯誤的方式,並對出錯時進行相應處理
public function handle()
{
try {
//執行佇列的程式碼
} catch (\Exception $exception) {
//產生錯誤時處理程式碼
};
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結