问答 / 0 / 9 / 创建于 3年前
laravel 队列如何让它再执行一次在任务文件中,如何当执行错误让它再执行一次,还有就是如何让它不再执行
public $tries
php artisan queue:work --tries = 3 // 失败最多重试三次,对所有监听的队列来说。Copy
php artisan queue:work --tries = 3 // 失败最多重试三次,对所有监听的队列来说。
单独控制每个任务的重试次数,可以自由控制颗粒度。
<?php namespace App\Jobs; class ProcessPodcast implements ShouldQueue { /** * 任务尝试次数. * * @var int */ public $tries = 5; }Copy
<?php namespace App\Jobs; class ProcessPodcast implements ShouldQueue { /** * 任务尝试次数. * * @var int */ public $tries = 5; }
@donggan 执行成功为什么要尝试啊?
你的意思是不是一个队列任务想执行多次?
可以考虑使用批次队列,这个不知道满足你的需求吗
use App\Jobs\ImportCsv; use Illuminate\Bus\Batch; use Illuminate\Support\Facades\Bus; use Throwable; $batch = Bus::batch([ new ImportCsv(1, 100), new ImportCsv(101, 200), new ImportCsv(201, 300), new ImportCsv(301, 400), new ImportCsv(401, 500), ])->then(function (Batch $batch) { // 所有任务均已成功完成... })->catch(function (Batch $batch, Throwable $e) { // 检测到第一批任务失败... })->finally(function (Batch $batch) { // 批处理已完成执行... })->dispatch(); return $batch->id;Copy
use App\Jobs\ImportCsv; use Illuminate\Bus\Batch; use Illuminate\Support\Facades\Bus; use Throwable; $batch = Bus::batch([ new ImportCsv(1, 100), new ImportCsv(101, 200), new ImportCsv(201, 300), new ImportCsv(301, 400), new ImportCsv(401, 500), ])->then(function (Batch $batch) { // 所有任务均已成功完成... })->catch(function (Batch $batch, Throwable $e) { // 检测到第一批任务失败... })->finally(function (Batch $batch) { // 批处理已完成执行... })->dispatch(); return $batch->id;
return $this->release(10);Copy
return $this->release(10);
我要举报该,理由是:
推荐文章: