Ne PHP ve pahalı bir operasyon sınırlamak Oranı iyi yaklaşım

1 Cevap php

Ben bu ile geldi:

if($prog->memcache) {
    $r = $prog->memcache->get("ratelimit:{$_SERVER['REMOTE_ADDR']}");
    if(!empty($r)) $prog->errorClose('This IP has been flagged for potential abuse.');
}

foo(); // the thing we're rate limiting...

if($prog->memcache)
    $prog->memcache->set("ratelimit:{$_SERVER['REMOTE_ADDR']}", 1, 0, 5);

IP Memcached bulunursa bu konuda herhangi bir düşünce, bir kaç saniye için uyku için faydalı olacaktır?

1 Cevap

Belki session_id () yerine ip adresini kullanabilirsiniz rağmen, oldukça iyi bir çözüm gibi görünüyor. Eğer bir router arkasında insanlarla uğraşıyoruz eğer bu şekilde, çekiçleme olmayan kişileri engellemez. Session_id kolayca onların çerezleri temizleyerek yeniden olabilir, ama sadece 5 saniye bekleyin daha muhtemelen, bunu yapmak için uzun götürürüm rağmen. Uyurken bu sadece bir PHP süreci tutar gibi kesinlikle bir PHP komut dosyası uyumak istemiyorum.

Onlar, uyarı isabet ettik 1saat süre içinde diyelim ve sonra daha sert bir şey yapabileceğini, ya da aşağı kullanıcı bilgilerini oturum kaç kez izlemek için başka bir memcache öğeyi kurmak olabilir.

Olsa (daha kolay yapılır daha söyledi) gibi pahalı değil yani operasyonu optimize etmek için denemek için iyi olabilir.