РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1362 of 1392 menu

Атрибут tries

Атрибут tries класса Job определяет максимальное количество попыток выполнения задания в очереди. Если задание завершается с ошибкой, оно будет повторно отправлено в очередь до достижения указанного лимита. Этот атрибут полезен для обработки временных сбоев, таких как проблемы с сетью или недоступность внешних сервисов. Если количество попыток превышено, задание помечается как неудавшееся и может быть обработано методом failed.

Синтаксис

<?php class MyJob implements ShouldQueue { public $tries = 5; public function handle() { // logic } } ?>

Пример

Давайте создадим задание, которое будет пытаться выполниться максимум три раза:

<?php namespace App\Jobs; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use App\Models\User; class SendEmailJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, SerializesModels; public $tries = 3; protected $user; public function __construct(User $user) { $this->user = $user; } public function handle() { // Отправляем email пользователю mail($this->user->email, 'Welcome', 'Welcome to our service!'); } } ?>

Пример

Теперь отправим задание в очередь:

<?php namespace App\Http\Controllers; use App\Models\User; use App\Jobs\SendEmailJob; class UserController extends Controller { public function register() { $user = User::find(1); SendEmailJob::dispatch($user); return 'Job dispatched with 3 attempts limit'; } } ?>

Пример

Атрибут tries также может быть переопределён в методе handle через свойство job. Это позволяет динамически устанавливать количество попыток в зависимости от условий:

<?php namespace App\Jobs; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class DynamicTriesJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, SerializesModels; public $tries = 5; public function handle() { if ($this->attempts() > 3) { $this->job->setTries(7); } // logic } } ?>

Смотрите также

  • атрибут backoff,
    который задаёт задержку между повторными попытками
  • атрибут timeout,
    который определяет максимальное время выполнения задания
  • атрибут maxExceptions,
    который ограничивает количество исключений перед неудачей
  • метод failed,
    который вызывается при превышении лимита попыток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить