PHP'de Rate Limiting: Token Bucket Algoritması Uygulaması

  • Konbuyu başlatan Konbuyu başlatan sysuser
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 16

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.
 
Geri
Üst