X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FCache%2FMemcacheCacheDriver.php;h=bff543b542478ed4db0f80f9e7488f49cae758ed;hb=1e96faca4c9825bf6a8d8a50dc37498b764b9a3d;hp=1537be25b202a1e96515362a76dc9260c18d98a6;hpb=78114c13d5ce27b36682a960859056d4ebf9d9be;p=friendica.git diff --git a/src/Core/Cache/MemcacheCacheDriver.php b/src/Core/Cache/MemcacheCacheDriver.php index 1537be25b2..bff543b542 100644 --- a/src/Core/Cache/MemcacheCacheDriver.php +++ b/src/Core/Cache/MemcacheCacheDriver.php @@ -2,7 +2,6 @@ namespace Friendica\Core\Cache; -use Friendica\BaseObject; use Friendica\Core\Cache; /** @@ -10,10 +9,13 @@ use Friendica\Core\Cache; * * @author Hypolite Petovan */ -class MemcacheCacheDriver extends BaseObject implements ICacheDriver +class MemcacheCacheDriver extends AbstractCacheDriver implements IMemoryCacheDriver { + use TraitCompareSet; + use TraitCompareDelete; + /** - * @var Memcache + * @var \Memcache */ private $memcache; @@ -30,12 +32,16 @@ class MemcacheCacheDriver extends BaseObject implements ICacheDriver } } + /** + * (@inheritdoc) + */ public function get($key) { $return = null; + $cachekey = $this->getCacheKey($key); // We fetch with the hostname as key to avoid problems with other applications - $cached = $this->memcache->get(self::getApp()->get_hostname() . ':' . $key); + $cached = $this->memcache->get($cachekey); // @see http://php.net/manual/en/memcache.get.php#84275 if (is_bool($cached) || is_double($cached) || is_long($cached)) { @@ -54,24 +60,57 @@ class MemcacheCacheDriver extends BaseObject implements ICacheDriver return $return; } - public function set($key, $value, $duration = Cache::MONTH) + /** + * (@inheritdoc) + */ + public function set($key, $value, $ttl = Cache::FIVE_MINUTES) { + $cachekey = $this->getCacheKey($key); + // We store with the hostname as key to avoid problems with other applications - return $this->memcache->set( - self::getApp()->get_hostname() . ":" . $key, - serialize($value), - MEMCACHE_COMPRESSED, - time() + $duration - ); + if ($ttl > 0) { + return $this->memcache->set( + $cachekey, + serialize($value), + MEMCACHE_COMPRESSED, + time() + $ttl + ); + } else { + return $this->memcache->set( + $cachekey, + serialize($value), + MEMCACHE_COMPRESSED + ); + } } + /** + * (@inheritdoc) + */ public function delete($key) { - return $this->memcache->delete($key); + $cachekey = $this->getCacheKey($key); + return $this->memcache->delete($cachekey); } - public function clear() + /** + * (@inheritdoc) + */ + public function clear($outdated = true) + { + if ($outdated) { + return true; + } else { + return $this->memcache->flush(); + } + } + + /** + * (@inheritdoc) + */ + public function add($key, $value, $ttl = Cache::FIVE_MINUTES) { - return true; + $cachekey = $this->getCacheKey($key); + return $this->memcache->add($cachekey, serialize($value), MEMCACHE_COMPRESSED, $ttl); } }