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