Gdn_Cache::fail PHP Method

fail() public method

This method will attempt to temporarily excise the offending server from the connect roster for a period of time.
public fail ( string $server )
$server string
    public function fail($server)
    {
        // Use APC?
        $apc = false;
        if (c('Garden.Apc', false) && function_exists('apc_fetch')) {
            $apc = true;
        }
        // Get the active cache name
        $activeCache = Gdn_Cache::activeCache();
        $activeCache = ucfirst($activeCache);
        $activeStoreKey = "Cache.{$activeCache}.Store";
        // Get the local store.
        $localStore = val($activeCache, Gdn_Cache::$stores, null);
        if (is_null($localStore)) {
            Gdn_Cache::activeStore();
            $localStore = val($activeCache, Gdn_Cache::$stores, null);
            if (is_null($localStore)) {
                return false;
            }
        }
        $storeServerName = md5($server);
        if (!array_key_exists($storeServerName, $localStore)) {
            return false;
        }
        $storeServer =& $localStore[$storeServerName];
        $isActive =& $storeServer['Active'];
        if (!$isActive) {
            return false;
        }
        $fails =& $storeServer['Fails'];
        $fails++;
        $active = $isActive ? 'active' : 'inactive';
        // Check if we need to deactivate for 5 minutes
        if ($isActive && $storeServer['Fails'] > 3) {
            $isActive = false;
            $storeServer['Delay'] = time() + Gdn_Cache::CACHE_EJECT_DURATION;
        }
        // Save
        Gdn_Cache::$stores[$activeCache] = $localStore;
        // Save to APC
        if ($apc) {
            apc_store($activeStoreKey, $localStore, Gdn_Cache::APC_CACHE_DURATION);
        }
        return true;
    }