]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Cache/MemcacheCacheDriver.php
Merge pull request #6784 from nupplaphil/task/image_to_model
[friendica.git] / src / Core / Cache / MemcacheCacheDriver.php
index 5fe9225e78fcc722c842b89c0636472ef761a50d..fd928c6fcc15ed2a5245f2bca27c664a6f696531 100644 (file)
@@ -10,7 +10,7 @@ use Memcache;
 /**
  * Memcache Cache Driver
  *
- * @author Hypolite Petovan <mrpetovan@gmail.com>
+ * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
 class MemcacheCacheDriver extends AbstractCacheDriver implements IMemoryCacheDriver
 {
@@ -22,6 +22,11 @@ class MemcacheCacheDriver extends AbstractCacheDriver implements IMemoryCacheDri
         */
        private $memcache;
 
+       /**
+        * @param string $memcache_host
+        * @param int    $memcache_port
+        * @throws Exception
+        */
        public function __construct($memcache_host, $memcache_port)
        {
                if (!class_exists('Memcache', false)) {
@@ -35,6 +40,30 @@ class MemcacheCacheDriver extends AbstractCacheDriver implements IMemoryCacheDri
                }
        }
 
+       /**
+        * (@inheritdoc)
+        */
+       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);
+
+               return $this->filterArrayKeysByPrefix($keys, $prefix);
+       }
+
        /**
         * (@inheritdoc)
         */