示例#1
0
 public function selectDriver($config)
 {
     $cache_engine = $config['cache-engine'];
     //redis, apc, memcache, memcached e xcache
     switch ($cache_engine) {
         case 'redis':
             if (!extension_loaded('redis')) {
                 throw new \Exception("Extensão para {$cache_engine} não encontrada");
             }
             $redis = new \Redis();
             $redis->connect($config['cache-config']['host'], $config['cache-config']['port']);
             $this->driver = new RedisCache();
             $this->driver->setRedis($redis);
             break;
         case 'apc':
             if (!extension_loaded('apc')) {
                 throw new \Exception("Extensão para {$cache_engine} não encontrada");
             }
             $this->driver = new ApcCache();
             break;
         case 'memcache':
             if (!extension_loaded('memcache')) {
                 throw new \Exception("Extensão para {$cache_engine} não encontrada");
             }
             $memcache_config = new \Memcache();
             $memcache_config->connect($config['cache-config']['host'], $config['cache-config']['port']);
             $this->driver = new MemcacheCache();
             $this->driver->setMemcache($memcache_config);
             break;
         case 'memcached':
             if (!extension_loaded('memcache')) {
                 throw new \Exception("Extensão para {$cache_engine} não encontrada");
             }
             $memcached = new \Memcached();
             $memcached->addServer($config['cache-config']['host'], $config['cache-config']['port']);
             $this->driver = new MemcachedCache();
             $this->driver->setMemcached($memcached);
             break;
         case 'xcache':
             if (!extension_loaded('xcache')) {
                 throw new Exception("Extensão para {$cache_engine} não encontrada");
             }
             $this->driver = new XcacheCache();
             break;
         default:
             throw new \Exception('O driver especificado não foi encontado.');
     }
 }
 /**
  * @param CacheProvider $cacheProvider
  *
  * @return CacheProvider
  */
 protected function decorateWithConnectable(CacheProvider $cacheProvider)
 {
     $redis = $this->getRedisAdapter();
     $settings = $this->config->getSettings();
     $redis->connect($settings['host'], $settings['port']);
     $cacheProvider->setRedis($redis);
     return $cacheProvider;
 }
示例#3
0
 /**
  * @param string $type
  *
  * @throws \LogicException
  */
 protected function _initializeCache($type)
 {
     switch ($type) {
         case CacheTypes::REDIS:
             $_redis = new \Redis();
             if (false === $_redis->pconnect('127.0.0.1')) {
                 throw new \LogicException('Cannot connect to redis server @ 127.0.0.1');
             }
             $this->_store->setRedis($_redis);
             break;
     }
 }
示例#4
0
 /**
  * Get cache driver instance
  *
  * @return \Doctrine\Common\Cache\CacheProvider
  */
 public function getCacheDriver()
 {
     if (!is_null($this->cacheDriver)) {
         return $this->cacheDriver;
     }
     if (php_sapi_name() === 'cli') {
         return $this->cacheDriver = new \Doctrine\Common\Cache\ArrayCache();
     }
     try {
         switch ($this->systemPreferences->get('DBCacheEngine', 'Array')) {
             case 'apc':
                 $this->cacheDriver = new \Doctrine\Common\Cache\ApcCache();
                 break;
             case 'memcache':
                 $memcache = new \Memcache();
                 $memcache->connect($this->systemPreferences->get('DBCacheEngineHost', '127.0.0.1'), $this->systemPreferences->get('DBCacheEnginePort', '11211'));
                 $this->cacheDriver = new \Doctrine\Common\Cache\MemcacheCache();
                 $this->cacheDriver->setMemcache($memcache);
                 break;
             case 'memcached':
                 $memcached = new \Memcached();
                 $memcached->addServer($this->systemPreferences->get('DBCacheEngineHost', '127.0.0.1'), $this->systemPreferences->get('DBCacheEnginePort', '11211'));
                 $this->cacheDriver = new \Doctrine\Common\Cache\MemcachedCache();
                 $this->cacheDriver->setMemcached($memcached);
                 break;
             case 'xcache':
                 $this->cacheDriver = new \Doctrine\Common\Cache\XcacheCache();
                 break;
             case 'redis':
                 $redis = new \Redis();
                 $redis->connect($this->systemPreferences->get('DBCacheEngineHost', '127.0.0.1'), $this->systemPreferences->get('DBCacheEnginePort', '6379'));
                 $this->cacheDriver = new \Doctrine\Common\Cache\RedisCache();
                 $this->cacheDriver->setRedis($redis);
                 break;
             default:
                 $this->cacheDriver = new \Doctrine\Common\Cache\ArrayCache();
                 break;
         }
     } catch (\Exception $e) {
         $this->cacheDriver = new \Doctrine\Common\Cache\ArrayCache();
     }
     return $this->cacheDriver;
 }