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) { $memcache = $this->getMemcacheAdapter(); $settings = $this->config->getSettings(); $memcache->connect($settings['host'], $settings['port']); $cacheProvider->setMemcache($memcache); return $cacheProvider; }
private function buildMemcacheCache() { if (null === $this->host) { throw new HostShouldBeProvidedException(); } if (null === $this->port) { $this->port = Memcache::DEFAULT_PORT; } if (null === $this->timeout) { $this->timeout = Memcache::DEFAULT_TIMEOUT; } $this->server->addserver($this->host, $this->port, null, null, $this->timeout); $this->cacheProvider->setMemcache($this->server); }
/** * 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; }