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

Метод retry

Метод retry применяется к HTTP-клиенту Laravel и позволяет автоматически повторять запросы при возникновении ошибок. Первым параметром передаётся максимальное количество попыток, вторым - задержка в миллисекундах между попытками, третьим - колбэк, который определяет, какие ошибки следует повторять. Если колбэк не указан, повторяются все ошибки, кроме исключений ConnectionException.

Синтаксис

<?php use Illuminate\Support\Facades\Http; Http::retry($attempts, $delay, $callback); ?>

Пример

Давайте выполним GET-запрос с автоматическим повтором до трёх раз с задержкой в одну секунду:

<?php use Illuminate\Support\Facades\Http; $res = Http::retry(3, 1000)->get('https://api.example.com/users'); echo $res->body(); ?>

Результат выполнения кода:

{"users": [{"id": 1, "name": "user"}, {"id": 2, "name": "user"}]}

Пример

Давайте настроим повтор только для ошибок с кодом 429 (Too Many Requests) с увеличивающейся задержкой:

<?php use Illuminate\Support\Facades\Http; $res = Http::retry(5, 1000, function ($exception, $request) { return $exception->getCode() === 429; })->get('https://api.example.com/posts'); echo $res->status(); ?>

Результат выполнения кода:

"200"

Пример

Давайте используем экспоненциальную задержку между повторами с помощью колбэка:

<?php use Illuminate\Support\Facades\Http; $res = Http::retry(4, function ($attempt) { return $attempt * 1000; })->post('https://api.example.com/categories', [ 'name' => 'category', ]); echo $res->json(); ?>

Результат выполнения кода:

{"id": 1, "name": "category", "created_at": "2026-01-01"}

Пример

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

<?php use Illuminate\Support\Facades\Http; use Illuminate\Http\Client\ConnectionException; $res = Http::retry(3, 2000, function ($exception, $request) { return $exception instanceof ConnectionException; })->get('https://api.example.com/articles'); echo $res->body(); ?>

Результат выполнения кода:

[{"id": 1, "title": "article"}, {"id": 2, "title": "article"}]

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

  • метод get,
    который выполняет GET-запрос через HTTP клиент
  • метод post,
    который выполняет POST-запрос через HTTP клиент
  • метод timeout,
    который устанавливает таймаут для HTTP-запроса
  • метод throw,
    который выбрасывает исключение при ошибке HTTP-запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить