CloudCastle Curl

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
throws
InvalidArgumentException

если окно не положительное

process()

Обработать запрос, передав управление дальше по конвейеру.

public process(Request $request, callable(Request): Response $next) : Response
Parameters
$request : Request

входящий запрос

$next : callable(Request): Response

следующий обработчик конвейера

Attributes
#[Override]
Return values
Response —

полученный ответ

On this page

Search results