RateLimitMiddleware
in package
implements
MiddlewareInterface
FinalYes
Ограничение частоты запросов скользящим окном.
Пропускает не более $limit запросов за $interval секунд — глобально или
отдельно для каждого хоста. Если окно заполнено, звено ждёт ровно столько,
сколько нужно до освобождения слота (а не отклоняет запрос), — так клиент
соблюдает квоты внешних API без ошибок 429.
Table of Contents
Interfaces
- MiddlewareInterface
- Звено конвейера обработки запроса.
Methods
- __construct() : mixed
- process() : Response
- Обработать запрос, передав управление дальше по конвейеру.
Methods
__construct()
public
__construct(positive-int $limit, float $interval[, bool $perHost = false ][, callable(int): void|null $sleeper = null ][, callable(): float|null $clock = null ]) : mixed
Parameters
- $limit : positive-int
-
максимум запросов в окне
- $interval : float
-
длина окна в секундах
- $perHost : bool = false
-
считать ли лимит отдельно для каждого хоста
- $sleeper : callable(int): void|null = null
-
пауза в микросекундах (для тестов)
- $clock : callable(): float|null = null
-
источник времени в секундах (для тестов)
Tags
process()
Обработать запрос, передав управление дальше по конвейеру.
public
process(Request $request, callable(Request): Response $next) : Response
Parameters
- $request : Request
-
входящий запрос
- $next : callable(Request): Response
-
следующий обработчик конвейера
Attributes
- #[Override]
Return values
Response —полученный ответ