---
title: "Adaptívne obmedzovanie — HTTP Client Rate Limits for Laravel | Roundly"
description: "Rešpektujte limit samotného servera — čítajte hlavičky Retry-After a X-RateLimit-* a spomaľte presne podľa požiadavky."
url: https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel/adaptivne-obmedzovanie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[HTTP Client Rate Limits for Laravel](https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel.md)

# Adaptívne obmedzovanie

Zapnete ho cez ->adaptive(): limiter potom z každej odpovede číta Retry-After a X-RateLimit-Remaining / X-RateLimit-Reset a zapíše do úložiska penalizáciu, takže ďalšia požiadavka počká presne toľko, koľko server žiadal:

```php
use Illuminate\Support\Facades\Http;
use RoundlyConsulting\HttpClientRateLimits\Facades\RateLimits;

Http::rateLimit(RateLimits::perSecond(20)->adaptive())
    ->get('https://api.example.com/things');
```

Rovnako funguje cez Http::rateLimit(), Http::withMiddleware(), Http::pool(), adaptívny pomenovaný profil aj cez handle() okolo ľubovoľného callable, ktoré vráti odpoveď — alebo vyhodí RequestException (->throw() pri 429): limiter sa prispôsobí podľa odpovede vo výnimke a potom ju vyhodí ďalej:

```php
$api = RateLimits::perSecond(20)->by('api')->adaptive();

// Wrap any callable that returns a response; its headers are read the same way.
$response = $api->handle(fn () => Http::get('https://api.example.com/things'));

// After a 429 with "Retry-After: 7", the next call through $api waits 7 seconds.
$next = $api->handle(fn () => Http::get('https://api.example.com/things'));
```

## Ako sa hlavičky vyhodnocujú

- Retry-After — počet sekúnd alebo HTTP dátum; ak je prítomná, má prednosť.
- Inak X-RateLimit-Remaining: 0 spolu s číselným X-RateLimit-Reset — celé aj desatinné sekundy (1790000030.250), zaokrúhlené nahor. Reset môže byť oneskorenie v sekundách alebo epoch časová značka; značka, ktorá už uplynula, čakanie nežiada.
- Hlavičky, ktoré spomalenie nežiadajú — remaining nad nulou, chýbajúci alebo nečíselný reset (záporný, 1e3, …) — sa ignorujú.
- Čakanie od servera sa rešpektuje najviac jeden deň: väčšia hodnota Retry-After / X-RateLimit-Reset (škodlivá alebo chybná) sa na ňom zastaví, aby nezablokovala workera ani nepretiekla.
- Penalizácia sa uloží metódou úložiska penalizeUntil() pod kľúč vlastníka každého adaptívneho okna. Na zdieľanom úložisku tak spomalia všetky procesy s týmto kľúčom naraz.

## Z pomenovaného profilu

```php
// config/http-client-rate-limits.php
'limiters' => [
    'partner' => ['rate' => 20, 'per' => 'second', 'by' => 'partner', 'adaptive' => true],
],

// anywhere
Http::rateLimit('partner')->get('https://partner.example.com/feed');
```

Adaptívne obmedzovanie dopĺňa proaktívne rozkladanie — deklarovaný limit platí ďalej a signál servera predĺži čakanie, keď si ho vyžiada.

## Prejavte 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel.md)
