Exemplo n.º 1
0
function clearBucketBlocks()
{
    $m = getBucketMemcache();
    if (!$m) {
        return false;
    }
    $m->delete('blockedList');
    return true;
}
Exemplo n.º 2
0
    echo "Closed for re-indexing...";
    exit;
}
$aBucketKeys = array();
if (isset($_SERVER["HTTP_REFERER"])) {
    $aBucketKeys[] = str_replace('www.', '', strtolower(parse_url($_SERVER["HTTP_REFERER"], PHP_URL_HOST)));
}
if (isset($_SERVER["REMOTE_ADDR"])) {
    $aBucketKeys[] = $_SERVER["REMOTE_ADDR"];
}
if (isset($_GET["email"])) {
    $aBucketKeys[] = $_GET["email"];
}
$fBucketVal = doBucket($aBucketKeys, (defined('CONST_ConnectionBucket_PageType') ? constant('CONST_ConnectionBucket_Cost_' . CONST_ConnectionBucket_PageType) : 1) + user_busy_cost(), CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_BlockLimit);
if ($fBucketVal > 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');