示例#1
0
 /**
  * @return _DevblocksCacheManager
  */
 public static function getInstance()
 {
     if (null == self::$instance) {
         self::$instance = new _DevblocksCacheManager();
         $options = array('key_prefix' => defined('DEVBLOCKS_CACHE_PREFIX') && DEVBLOCKS_CACHE_PREFIX ? DEVBLOCKS_CACHE_PREFIX : null);
         // Shared-memory cache
         if ((extension_loaded('memcache') || extension_loaded('memcached')) && defined('DEVBLOCKS_MEMCACHED_SERVERS') && DEVBLOCKS_MEMCACHED_SERVERS) {
             $pairs = DevblocksPlatform::parseCsvString(DEVBLOCKS_MEMCACHED_SERVERS);
             $servers = array();
             if (is_array($pairs) && !empty($pairs)) {
                 foreach ($pairs as $server) {
                     list($host, $port) = explode(':', $server);
                     if (empty($host) || empty($port)) {
                         continue;
                     }
                     $servers[] = array('host' => $host, 'port' => $port);
                 }
             }
             $options['servers'] = $servers;
             self::$_cacher = new _DevblocksCacheManagerMemcached($options);
         }
         // Disk-based cache (default)
         if (null == self::$_cacher) {
             $options['cache_dir'] = APP_TEMP_PATH;
             self::$_cacher = new _DevblocksCacheManagerDisk($options);
         }
     }
     return self::$instance;
 }