在laravel 4.2文档中,据说如果我想从失败的作业表中重试失败的作业,我应该这样做:
php artisan queue:retry 5
其中5是职位ID。
如何一次重试所有失败的作业?
答案 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)
要重试所有失败的作业,请使用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