已失败的工作
事情往往不会如你预期的一样,有时候你推送工作到队列会失败,别担心,Laravel 包含一个简单的方法去指定一个工作最多可以被执行几次,在工作被执行到一定的次数时,他将会添加至 failed_jobs
数据表里,然后失败工作的数据表名称可以在 config/queue.php
里进行设置:
要产生一个迁移来建立 failed_jobs
数据表,你可以使用queue:failed-table Artisan
命令:
php artisan queue:failed-table
你可以指定一个最大值来限制一个工作应该最多被执行几次,在你执行 queue:listen
时加上 --tries
:
php artisan queue:listen connection-name --tries=3
假如你会想注册一个事件,这个事件会将会在队列失败时被调用,你可以使用 Queue::failing
方法,这个事件是一个很好的机会让你可以通知你的团队通过 e-mail
或 HipChat
。
Queue::failing(function($connection, $job, $data)
{
//
});
你可能够直接在队列工作类别中定义一个 failed
方法,这让你能够在工作失败时候,执行一些特定的动作:
public function failed()
{
// 当工作失败的时候会被调用……
}
重新尝试失败的工作
要看到所有失败的工作,你可以使用 queue:failed
命令:
php artisan queue:failed
这个 queue:failed
命令将会列出工作 ID、连接、队列名称及失败的时间,可以使用工作 ID 重新执行一个失败的工作,例如一个已经失败的工作的 ID 是 5,我们可以使用下面的命令:
php artisan queue:retry 5
假如你想删除一个失败的工作,可以使用 queue:forget
命令:
php artisan queue:forget 5
要删除全部失败的工作,可以使用 queue:flush
命令:
php artisan queue:flush
更多建议: