Chris@0: . Chris@0: */ Chris@0: Chris@0: namespace Doctrine\Common\Cache; Chris@0: Chris@0: /** Chris@0: * Xcache cache driver. Chris@0: * Chris@0: * @link www.doctrine-project.org Chris@0: * @since 2.0 Chris@0: * @author Benjamin Eberlei Chris@0: * @author Guilherme Blanco Chris@0: * @author Jonathan Wage Chris@0: * @author Roman Borschel Chris@0: * @author David Abdemoulaie Chris@0: */ Chris@0: class XcacheCache extends CacheProvider Chris@0: { Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doFetch($id) Chris@0: { Chris@0: return $this->doContains($id) ? unserialize(xcache_get($id)) : false; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doContains($id) Chris@0: { Chris@0: return xcache_isset($id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doSave($id, $data, $lifeTime = 0) Chris@0: { Chris@0: return xcache_set($id, serialize($data), (int) $lifeTime); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doDelete($id) Chris@0: { Chris@0: return xcache_unset($id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doFlush() Chris@0: { Chris@0: $this->checkAuthorization(); Chris@0: Chris@0: xcache_clear_cache(XC_TYPE_VAR); Chris@0: Chris@0: return true; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Checks that xcache.admin.enable_auth is Off. Chris@0: * Chris@0: * @return void Chris@0: * Chris@0: * @throws \BadMethodCallException When xcache.admin.enable_auth is On. Chris@0: */ Chris@0: protected function checkAuthorization() Chris@0: { Chris@0: if (ini_get('xcache.admin.enable_auth')) { Chris@0: throw new \BadMethodCallException( Chris@0: 'To use all features of \Doctrine\Common\Cache\XcacheCache, ' Chris@0: . 'you must set "xcache.admin.enable_auth" to "Off" in your php.ini.' Chris@0: ); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doGetStats() Chris@0: { Chris@0: $this->checkAuthorization(); Chris@0: Chris@0: $info = xcache_info(XC_TYPE_VAR, 0); Chris@0: return array( Chris@0: Cache::STATS_HITS => $info['hits'], Chris@0: Cache::STATS_MISSES => $info['misses'], Chris@0: Cache::STATS_UPTIME => null, Chris@0: Cache::STATS_MEMORY_USAGE => $info['size'], Chris@0: Cache::STATS_MEMORY_AVAILABLE => $info['avail'], Chris@0: ); Chris@0: } Chris@0: }