已失敗的工作

2018-02-24 15:52 更新

事情往往不會如你預(yù)期的一樣,有時候你推送工作到隊列會失敗,別擔(dān)心,Laravel 包含一個簡單的方法去指定一個工作最多可以被執(zhí)行幾次,在工作被執(zhí)行到一定的次數(shù)時,他將會添加至 failed_jobs 數(shù)據(jù)表里,然后失敗工作的數(shù)據(jù)表名稱可以在 config/queue.php 里進(jìn)行設(shè)置:

要產(chǎn)生一個遷移來建立 failed_jobs 數(shù)據(jù)表,你可以使用
queue:failed-table Artisan 命令:

php artisan queue:failed-table

你可以指定一個最大值來限制一個工作應(yīng)該最多被執(zhí)行幾次,在你執(zhí)行 queue:listen 時加上 --tries

php artisan queue:listen connection-name --tries=3

假如你會想注冊一個事件,這個事件會將會在隊列失敗時被調(diào)用,你可以使用 Queue::failing 方法,這個事件是一個很好的機會讓你可以通知你的團隊通過 e-mailHipChat。

Queue::failing(function($connection, $job, $data)
{
    //
});

你可能夠直接在隊列工作類別中定義一個 failed 方法,這讓你能夠在工作失敗時候,執(zhí)行一些特定的動作:

public function failed()
{
    // 當(dāng)工作失敗的時候會被調(diào)用……
}

重新嘗試失敗的工作

要看到所有失敗的工作,你可以使用 queue:failed 命令:

php artisan queue:failed

這個 queue:failed 命令將會列出工作 ID、連接、隊列名稱及失敗的時間,可以使用工作 ID 重新執(zhí)行一個失敗的工作,例如一個已經(jīng)失敗的工作的 ID 是 5,我們可以使用下面的命令:

php artisan queue:retry 5

假如你想刪除一個失敗的工作,可以使用 queue:forget 命令:

php artisan queue:forget 5

要刪除全部失敗的工作,可以使用 queue:flush 命令:

php artisan queue:flush
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號