Chris@0: . Chris@0: */ Chris@0: Chris@0: namespace Doctrine\Common\Cache; Chris@0: Chris@0: use \Couchbase; Chris@0: Chris@0: /** Chris@0: * Couchbase cache provider. Chris@0: * Chris@0: * @link www.doctrine-project.org Chris@0: * @since 2.4 Chris@0: * @author Michael Nitschinger Chris@0: */ Chris@0: class CouchbaseCache extends CacheProvider Chris@0: { Chris@0: /** Chris@0: * @var Couchbase|null Chris@0: */ Chris@0: private $couchbase; Chris@0: Chris@0: /** Chris@0: * Sets the Couchbase instance to use. Chris@0: * Chris@0: * @param Couchbase $couchbase Chris@0: * Chris@0: * @return void Chris@0: */ Chris@0: public function setCouchbase(Couchbase $couchbase) Chris@0: { Chris@0: $this->couchbase = $couchbase; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets the Couchbase instance used by the cache. Chris@0: * Chris@0: * @return Couchbase|null Chris@0: */ Chris@0: public function getCouchbase() Chris@0: { Chris@0: return $this->couchbase; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doFetch($id) Chris@0: { Chris@0: return $this->couchbase->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 (null !== $this->couchbase->get($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: if ($lifeTime > 30 * 24 * 3600) { Chris@0: $lifeTime = time() + $lifeTime; Chris@0: } Chris@0: return $this->couchbase->set($id, $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 $this->couchbase->delete($id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doFlush() Chris@0: { Chris@0: return $this->couchbase->flush(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doGetStats() Chris@0: { Chris@0: $stats = $this->couchbase->getStats(); Chris@0: $servers = $this->couchbase->getServers(); Chris@0: $server = explode(":", $servers[0]); Chris@0: $key = $server[0] . ":" . "11210"; Chris@0: $stats = $stats[$key]; Chris@0: return array( Chris@0: Cache::STATS_HITS => $stats['get_hits'], Chris@0: Cache::STATS_MISSES => $stats['get_misses'], Chris@0: Cache::STATS_UPTIME => $stats['uptime'], Chris@0: Cache::STATS_MEMORY_USAGE => $stats['bytes'], Chris@0: Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'], Chris@0: ); Chris@0: } Chris@0: }