Samostatné limity pre vlastníkov
Hodí sa, keď je jedna kvóta zdieľaná naprieč servermi alebo účtami a každého vlastníka chcete sledovať samostatne (napr. podľa odchádzajúcej IP). by() zmení kľúč všetkých okien limitu vrátane zložených:
$middleware = RateLimits::perHour(60)->by('203.0.113.10');
Http::withMiddleware($middleware)->get('https://api.example.com/orders');Makro prijíma vlastníka ako pomenovaný argument — Http::rateLimit(30, by: 'acct-1') — a funguje so všetkými formami: číslom, menom profilu, RateLimit, Limit aj zloženým poľom, kde zmení kľúč všetkých okien. Mení kľúč kópie, takže odovzdaný RateLimit alebo Limit (ktorý používate aj inde) si zachová vlastný kľúč.
Oddeľte jednotlivé API
Záznamy sa ukladajú podľa kľúča vlastníka a okna. Limit bez by() používa kľúč global a všetky limity zapisujú do jedného zdieľaného úložiska, takže dva nesúvisiace limity bez kľúča s rovnakým oknom čítajú rovnakú históriu. Každému API — a pri limitoch na zákazníka aj každému tenantovi — dajte vlastný kľúč:
// Without by(), every limit uses the owner key 'global'. Every limit shares one
// store, so give each upstream API its own key so their budgets never mix:
$github = RateLimits::perSecond(5)->by('github');
$stripe = RateLimits::perSecond(25)->by('stripe');
// Per-tenant budgets for the same API:
Http::rateLimit(RateLimits::perMinute(100)->by("billing:{$tenant->id}"))
->post('https://api.example.com/invoices', $payload);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 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.