Keď je events_enabled zapnuté (predvolene áno), limiter odosiela:
- RequestDeferred — string $key, int $delayMs, int $hitsInWindow, Timespan $timespan — tesne pred pozastavením požiadavky pre vyčerpaný limit (znova, ak požiadavka počas čakania stratí miesto v prospech iného workera). Kľúč, počet aj okno opisujú okno, ktoré čakanie vynútilo (pri zloženom limite to najprísnejšie); hitsInWindow je skutočný počet požiadaviek zaznamenaných v ňom, 0 ak čakanie spôsobila len penalizácia od servera.
- RequestAllowed — string $key, int $hitsInWindow, Timespan $timespan — po zaznamenaní a povolení požiadavky, s počtom pokusov primárneho okna vrátane tejto požiadavky.
- RateLimitReset — string $key — po tom, čo ->reset() vymazal zaznamenané pokusy limitu (kľúč primárneho limitu).
Všetky tri sú v RoundlyConsulting\HttpClientRateLimits\Events. Počúvajte ich na logovanie, grafy alebo upozornenia pri obmedzení:
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\HttpClientRateLimits\Events\RequestDeferred;
Event::listen(function (RequestDeferred $event): void {
logger()->warning('Throttled outbound request', [
'key' => $event->key,
'delay_ms' => $event->delayMs,
'window' => $event->timespan->value,
]);
});use Illuminate\Support\Facades\Event;
use RoundlyConsulting\HttpClientRateLimits\Events\RequestAllowed;
Event::listen(function (RequestAllowed $event): void {
logger()->debug('Outbound request allowed', [
'key' => $event->key,
'hits' => $event->hitsInWindow,
'window' => $event->timespan->label(), // 'Second' | 'Minute' | 'Hour' | 'Day'
]);
});use Illuminate\Support\Facades\Event;
use RoundlyConsulting\HttpClientRateLimits\Events\RateLimitReset;
Event::listen(function (RateLimitReset $event): void {
logger()->info('Rate limit reset', ['key' => $event->key]);
});Vypnutie udalostí
Pre najnižšiu možnú réžiu nastavte events_enabled na false:
HTTP_CLIENT_RATE_LIMITS_EVENTS_ENABLED=falsePrejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.