多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
事情往往不会如你预期的一样,有时候你推送工作到队列会失败,别担心,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 ~~~ ~~~