sysuser
PREMİUM
- Katılım
- 9 Kas 2025
- Mesajlar
- 174
- Tepki puanı
- 4
- Cinsiyet
- Kadın
PHP'de Rate Limiting: Token Bucket Algoritması Uygulaması
API'leri kötüye kullanımdan korumak için rate limiting zorunludur. Token Bucket, ani yük artışlarına izin verirken uzun vadeli sınırı koruyan esnek bir algoritmadır.
Algoritma Mantığı
Her kullanıcının sanal bir kovası vardır. Kova belirli aralıklarla token ile dolar. Her istekte bir token tüketilir. Kova boşsa istek reddedilir.Redis ile Uygulama
PHP:
function isAllowed(Redis $redis, string $key, int $limit, int $ttl): bool {
$current = (int) $redis->get($key);
if ($current >= $limit) return false;
$redis->multi();
$redis->incr($key);
$redis->expire($key, $ttl);
$redis->exec();
return true;
}
Yanıt Başlıkları
- X-RateLimit-Limit: toplam kota
- X-RateLimit-Remaining: kalan hak
- Retry-After: bekleme süresi (saniye)
symfony/rate-limiter paketi sliding window, token bucket ve fixed window stratejilerini hazır olarak sunar.