CONST_ConnectionBucket_WaitLimit && $fBucketVal < CONST_ConnectionBucket_BlockLimit) { $m = getBucketMemcache(); $iCurrentSleeping = $m->increment('sleepCounter'); if (false === $iCurrentSleeping) { $m->add('sleepCounter', 0); $iCurrentSleeping = $m->increment('sleepCounter'); } if ($iCurrentSleeping >= CONST_ConnectionBucket_MaxSleeping || isBucketSleeping($aBucketKeys)) { // Too many threads sleeping already. This becomes a hard block. $fBucketVal = doBucket($aBucketKeys, CONST_ConnectionBucket_BlockLimit, CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_BlockLimit); } else { setBucketSleeping($aBucketKeys, true); sleep(($fBucketVal - CONST_ConnectionBucket_WaitLimit)/CONST_ConnectionBucket_LeakRate); $fBucketVal = doBucket($aBucketKeys, CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_BlockLimit); setBucketSleeping($aBucketKeys, false); } $m->decrement('sleepCounter'); } if (strpos(CONST_BlockedIPs, ','.$_SERVER["REMOTE_ADDR"].',') !== false || $fBucketVal >= CONST_ConnectionBucket_BlockLimit) { header("HTTP/1.0 429 Too Many Requests"); echo "Your IP has been blocked. \n"; echo CONST_BlockMessage; exit; } header('Content-type: text/html; charset=utf-8');