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

Метод availableIn

Метод availableIn класса RateLimiter позволяет получить время в секундах, оставшееся до сброса текущего лимита попыток. Этот метод полезен при необходимости уведомить пользователя о том, через сколько времени он сможет повторить запрос. Метод принимает ключ ограничителя в качестве единственного параметра и возвращает целочисленное значение количества секунд.

Синтаксис

<?php use Illuminate\Support\Facades\RateLimiter; $seconds = RateLimiter::availableIn($key); ?>

Пример

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

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\RateLimiter; class ApiController extends Controller { public function test() { $key = 'api-test'; $maxAttempts = 3; // Выполняем попытки for ($i = 0; $i < 4; $i++) { if (RateLimiter::tooManyAttempts($key, $maxAttempts)) { $seconds = RateLimiter::availableIn($key); echo "Лимит превышен. Осталось ждать {$seconds} секунд."; break; } RateLimiter::hit($key, 60); echo "Попытка " . ($i + 1) . " засчитана."; } } } ?>

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

"Попытка 1 засчитана.Попытка 2 засчитана.Попытка 3 засчитана.Лимит превышен. Осталось ждать 57 секунд."

Пример

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

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\RateLimiter; use Illuminate\Http\Request; class UserController extends Controller { public function index(Request $request) { $key = $request->ip(); $maxAttempts = 5; if (RateLimiter::tooManyAttempts($key, $maxAttempts)) { $seconds = RateLimiter::availableIn($key); return response()->json([ 'error' => 'Too many requests', 'retry_after' => $seconds, 'message' => "Please wait {$seconds} seconds" ], 429); } RateLimiter::hit($key, 60); return response()->json(['data' => 'Success']); } } ?>

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

  • метод attempt,
    который выполняет действие с ограничением количества попыток
  • метод tooManyAttempts,
    который проверяет превышение лимита попыток
  • метод hit,
    который регистрирует новую попытку в ограничителе
  • метод remaining,
    который возвращает оставшееся количество попыток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить