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; }
/** * @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; } }
/** * 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; }