已失败的工作

2018-02-24 15:52 更新

事情往往不会如你预期的一样,有时候你推送工作到队列会失败,别担心,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-mailHipChat

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
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号