activeStore() public static method

For FileCache, the folder. For Memcache, the server(s).
public static activeStore ( type $ForceMethod = null ) : mixed
$ForceMethod type
return mixed Active Store Location
 /**
  * Reads in known/config servers and adds them to the instance.
  *
  * This method is called when the cache object is invoked by the framework
  * automatically, and needs to configure itself from the values in the global
  * config file.
  */
 public function autorun()
 {
     $Servers = Gdn_Cache::activeStore('memcached');
     if (!is_array($Servers)) {
         $Servers = explode(',', $Servers);
     }
     // No servers, cache temporarily offline
     if (!sizeof($Servers)) {
         SaveToConfig('Cache.Enabled', false, false);
         return false;
     }
     // Persistent, and already have servers. Short circuit adding.
     if ($this->Config(Gdn_Cache::CONTAINER_PERSISTENT) && count($this->servers())) {
         return true;
     }
     $Keys = array(Gdn_Cache::CONTAINER_LOCATION, Gdn_Cache::CONTAINER_PERSISTENT, Gdn_Cache::CONTAINER_WEIGHT, Gdn_Cache::CONTAINER_TIMEOUT, Gdn_Cache::CONTAINER_ONLINE, Gdn_Cache::CONTAINER_CALLBACK);
     foreach ($Servers as $CacheServer) {
         $CacheServer = explode(' ', $CacheServer);
         $CacheServer = array_pad($CacheServer, count($Keys), null);
         $CacheServer = array_combine($Keys, $CacheServer);
         foreach ($Keys as $KeyName) {
             $Value = val($KeyName, $CacheServer, null);
             if (is_null($Value)) {
                 unset($CacheServer[$KeyName]);
             }
         }
         $this->addContainer($CacheServer);
     }
 }
Beispiel #2
0
 /**
  * Reads in known/config servers and adds them to the instance.
  *
  * This method is called when the cache object is invoked by the framework
  * automatically, and needs to configure itself from the values in the global
  * config file.
  */
 public function autorun()
 {
     $Servers = Gdn_Cache::activeStore('memcache');
     if (!is_array($Servers)) {
         $Servers = explode(',', $Servers);
     }
     $Keys = array(Gdn_Cache::CONTAINER_LOCATION, Gdn_Cache::CONTAINER_PERSISTENT, Gdn_Cache::CONTAINER_WEIGHT, Gdn_Cache::CONTAINER_TIMEOUT, Gdn_Cache::CONTAINER_ONLINE, Gdn_Cache::CONTAINER_CALLBACK);
     foreach ($Servers as $CacheServer) {
         $CacheServer = explode(' ', $CacheServer);
         $CacheServer = array_pad($CacheServer, count($Keys), null);
         $CacheServer = array_combine($Keys, $CacheServer);
         foreach ($Keys as $KeyName) {
             $Value = GetValue($KeyName, $CacheServer, null);
             if (is_null($Value)) {
                 unset($CacheServer[$KeyName]);
             }
         }
         $this->addContainer($CacheServer);
     }
 }
 /**
  * Register a temporary server connection failure.
  *
  * This method will attempt to temporarily excise the offending server from
  * the connect roster for a period of time.
  *
  * @param string $server
  */
 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;
 }