執行 PHP artisan queue:work 一直 processing 非正常執行處理

lxzoliver發表於2020-04-14

由於業務需求改變,需要修改之前寫好的佇列

在執行 php artisan queue:work 命令過程中,佇列執行如下所示

執行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 協議》,轉載必須註明作者和本文連結

相關文章