Laravel 4 - 重试所有失败的作业

sta*_*low 7 php queue laravel

在 laravel 4.2 文档中,据说如果我想从失败的作业表中重试失败的作业,我应该这样做:

php artisan queue:retry 5
Run Code Online (Sandbox Code Playgroud)

其中 5 是作业 ID。

如何一次重试所有失败的作业?

Ria*_*jul 12

您可以通过运行重新尝试都失败了乔布斯:php artisan queue:retry all

这是官方文档:https : //laravel.com/docs/7.x/queues#retrying-failed-jobs

  • 问题是针对 Laravel 4 的,但是是的。从 Laravel 5 开始,这是正确的答案。 (2认同)

MaG*_*tas 8

Laravel 文档说:

要重试所有失败的作业,请使用 queue:retry 和 all 作为 ID:

php工匠队列:重试所有

然而这对我不起作用。我收到“没有与给定 ID 匹配的失败作业。”。我所做的是我运行了一个命令,允许我执行 php:

php artisan tinker
Run Code Online (Sandbox Code Playgroud)

并写道:

for ($i = 100; $i <= 150; $i ++) Artisan::call('queue:retry', ['id' => $i]);
Run Code Online (Sandbox Code Playgroud)

这里 100 和 150 是您失败的作业 ID 范围。我曾经动态地从数据库中检索它们,但是如果您使用另一个队列驱动程序,这将不起作用。

它的作用是遍历您指定范围内的 ID,并为每个 ID 调用“php artisan queue:retry XXX”命令。

  • `php artisanqueue:retry all` 将再次推送到 jobs 表,因此需要再次运行 `php artisanqueue:work`。 (2认同)

Dre*_*rew 5

我找不到这个问题的答案(我不认为 laravel 默认提供这个)所以我写了一个 bash 脚本来重试我需要的所有工作:

#!/bin/bash
for i in {53..800}
do
   php artisan queue:retry $i
done
Run Code Online (Sandbox Code Playgroud)