]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Cache/MemcachedCacheDriver.php
Merge pull request #6784 from nupplaphil/task/image_to_model
[friendica.git] / src / Core / Cache / MemcachedCacheDriver.php
index 82df98f13bb5c6c584fbb348caa01516aab209ee..687e67416acf3314c9d1655e5c63d2382e84cd86 100644 (file)
@@ -3,9 +3,9 @@
 namespace Friendica\Core\Cache;
 
 use Friendica\Core\Cache;
+use Friendica\Core\Logger;
 
 use Exception;
-use Friendica\Network\HTTPException\InternalServerErrorException;
 use Memcached;
 
 /**
@@ -41,9 +41,6 @@ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDr
 
                $this->memcached = new Memcached();
 
-
-               $this->memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, false);
-
                array_walk($memcached_hosts, function (&$value) {
                        if (is_string($value)) {
                                $value = array_map('trim', explode(',', $value));
@@ -62,13 +59,14 @@ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDr
         */
        public function getAllKeys($prefix = null)
        {
-               // Doesn't work because of https://github.com/php-memcached-dev/php-memcached/issues/367
-               // returns everytime an empty array
-               throw new InternalServerErrorException('getAllKeys for Memcached not supported yet');
+               $keys = $this->getOriginalKeys($this->memcached->getAllKeys());
 
-               $list = $this->getOriginalKeys($this->memcached->getAllKeys());
-
-               return $this->filterPrefix($list, $prefix);
+               if ($this->memcached->getResultCode() == Memcached::RES_SUCCESS) {
+                       return $this->filterArrayKeysByPrefix($keys, $prefix);
+               } else {
+                       Logger::log('Memcached \'getAllKeys\' failed with ' . $this->memcached->getResultMessage(), Logger::ALL);
+                       return [];
+               }
        }
 
        /**
@@ -84,6 +82,8 @@ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDr
 
                if ($this->memcached->getResultCode() === Memcached::RES_SUCCESS) {
                        $return = $value;
+               } else {
+                       Logger::log('Memcached \'get\' failed with ' . $this->memcached->getResultMessage(), Logger::ALL);
                }
 
                return $return;
@@ -109,7 +109,6 @@ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDr
                                $value
                        );
                }
-
        }
 
        /**