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

时间:2015-06-11 10:59:29

标签: php laravel queue

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

php artisan queue:retry 5

其中5是职位ID。

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

5 个答案:

答案 0 :(得分:6)

您可以通过运行php artisan queue:retry all重试所有失败的作业。

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

答案 1 :(得分:2)

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

#!/bin/bash
for i in {53..800}
do
   php artisan queue:retry $i
done

答案 2 :(得分:1)

Laravel docs说:

  

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

     

php artisan队列:重试所有

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

php artisan tinker

并写了这个:

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

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

这样做是为了遍历您指定范围内的ID并调用&#34; php工匠队列:重试XXX&#34;为每一个人命令。

答案 3 :(得分:0)

我已经创建了一个执行此操作的命令: https://gist.github.com/vitorbari/0ed093cf336278311ec070ab22b3ec3d

答案 4 :(得分:0)

通过工匠进行此操作的一种方法是指定范围。即使不是该范围内的每个ID都存在,技术人员仍会触发所有失败的作业,跳过它找不到的作业。例如,如果您有一堆在ID 200和510之间稀疏填充的作业,则可以执行以下操作:

php artisan queue:retry  --range 200-510