X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FCache%2FMemcacheCache.php;h=b6d93bf804ff6f54d8339dd099e3bcf733aae8b8;hb=043e04f484c1fbaf4444454ba08b2c769ca2761c;hp=002aabdfde68cfb44e5d532da42f1d23c6d686b7;hpb=19777baa793f51e744adb8e3fc12bb857bd111e3;p=friendica.git diff --git a/src/Core/Cache/MemcacheCache.php b/src/Core/Cache/MemcacheCache.php index 002aabdfde..b6d93bf804 100644 --- a/src/Core/Cache/MemcacheCache.php +++ b/src/Core/Cache/MemcacheCache.php @@ -1,20 +1,39 @@ . + * + */ namespace Friendica\Core\Cache; use Exception; -use Friendica\Core\Config\Configuration; +use Friendica\Core\BaseCache; +use Friendica\Core\Config\IConfig; use Memcache; /** * Memcache Cache - * - * @author Hypolite Petovan */ -class MemcacheCache extends Cache implements IMemoryCache +class MemcacheCache extends BaseCache implements IMemoryCache { use TraitCompareSet; use TraitCompareDelete; + use TraitMemcacheCommand; /** * @var Memcache @@ -24,7 +43,7 @@ class MemcacheCache extends Cache implements IMemoryCache /** * @throws Exception */ - public function __construct(string $hostname, Configuration $config) + public function __construct(string $hostname, IConfig $config) { if (!class_exists('Memcache', false)) { throw new Exception('Memcache class isn\'t available'); @@ -34,11 +53,11 @@ class MemcacheCache extends Cache implements IMemoryCache $this->memcache = new Memcache(); - $memcache_host = $config->get('system', 'memcache_host'); - $memcache_port = $config->get('system', 'memcache_port'); + $this->server = $config->get('system', 'memcache_host');; + $this->port = $config->get('system', 'memcache_port'); - if (!$this->memcache->connect($memcache_host, $memcache_port)) { - throw new Exception('Expected Memcache server at ' . $memcache_host . ':' . $memcache_port . ' isn\'t available'); + if (!@$this->memcache->connect($this->server, $this->port)) { + throw new Exception('Expected Memcache server at ' . $this->server . ':' . $this->port . ' isn\'t available'); } } @@ -47,21 +66,7 @@ class MemcacheCache extends Cache implements IMemoryCache */ public function getAllKeys($prefix = null) { - $keys = []; - $allSlabs = $this->memcache->getExtendedStats('slabs'); - foreach ($allSlabs as $slabs) { - foreach (array_keys($slabs) as $slabId) { - $cachedump = $this->memcache->getExtendedStats('cachedump', (int)$slabId); - foreach ($cachedump as $key => $arrVal) { - if (!is_array($arrVal)) { - continue; - } - $keys = array_merge($keys, array_keys($arrVal)); - } - } - } - - $keys = $this->getOriginalKeys($keys); + $keys = $this->getOriginalKeys($this->getMemcacheKeys()); return $this->filterArrayKeysByPrefix($keys, $prefix); } @@ -97,7 +102,7 @@ class MemcacheCache extends Cache implements IMemoryCache /** * (@inheritdoc) */ - public function set($key, $value, $ttl = Cache::FIVE_MINUTES) + public function set($key, $value, $ttl = Duration::FIVE_MINUTES) { $cachekey = $this->getCacheKey($key); @@ -142,14 +147,17 @@ class MemcacheCache extends Cache implements IMemoryCache /** * (@inheritdoc) */ - public function add($key, $value, $ttl = Cache::FIVE_MINUTES) + public function add($key, $value, $ttl = Duration::FIVE_MINUTES) { $cachekey = $this->getCacheKey($key); return $this->memcache->add($cachekey, serialize($value), MEMCACHE_COMPRESSED, $ttl); } - public function __toString() + /** + * {@inheritDoc} + */ + public function getName() { - return self::TYPE_MEMCACHE; + return Type::MEMCACHE; } }