]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Cache/MemcachedCache.php
Merge branch 'bug/phpinfo-accessible-hotfix' into develop
[friendica.git] / src / Core / Cache / MemcachedCache.php
index f841cae2cee94a70d52254d2fb0bd3f70f418369..d8fcbc770d428e1e68126f11e3493d9b82c2d23a 100644 (file)
@@ -1,22 +1,40 @@
 <?php
+/**
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Cache;
 
 use Exception;
-use Friendica\Core\Cache;
-use Friendica\Core\Config\Configuration;
+use Friendica\Core\BaseCache;
+use Friendica\Core\Config\IConfig;
 use Memcached;
 use Psr\Log\LoggerInterface;
 
 /**
  * Memcached Cache
- *
- * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
-class MemcachedCache extends AbstractCache implements IMemoryCache
+class MemcachedCache extends BaseCache implements IMemoryCache
 {
        use TraitCompareSet;
        use TraitCompareDelete;
+       use TraitMemcacheCommand;
 
        /**
         * @var \Memcached
@@ -36,9 +54,10 @@ class MemcachedCache extends AbstractCache implements IMemoryCache
         * }
         *
         * @param array $memcached_hosts
+        *
         * @throws \Exception
         */
-       public function __construct(string $hostname, Configuration $config, LoggerInterface $logger)
+       public function __construct(string $hostname, IConfig $config, LoggerInterface $logger)
        {
                if (!class_exists('Memcached', false)) {
                        throw new Exception('Memcached class isn\'t available');
@@ -58,6 +77,9 @@ class MemcachedCache extends AbstractCache implements IMemoryCache
                        }
                });
 
+               $this->server = $memcached_hosts[0][0] ?? 'localhost';
+               $this->port = $memcached_hosts[0][1] ?? 11211;
+
                $this->memcached->addServers($memcached_hosts);
 
                if (count($this->memcached->getServerList()) == 0) {
@@ -70,14 +92,9 @@ class MemcachedCache extends AbstractCache implements IMemoryCache
         */
        public function getAllKeys($prefix = null)
        {
-               $keys = $this->getOriginalKeys($this->memcached->getAllKeys());
+               $keys = $this->getOriginalKeys($this->getMemcacheKeys());
 
-               if ($this->memcached->getResultCode() == Memcached::RES_SUCCESS) {
-                       return $this->filterArrayKeysByPrefix($keys, $prefix);
-               } else {
-                       $this->logger->debug('Memcached \'getAllKeys\' failed', ['result' =>  $this->memcached->getResultMessage()]);
-                       return [];
-               }
+               return $this->filterArrayKeysByPrefix($keys, $prefix);
        }
 
        /**
@@ -85,7 +102,7 @@ class MemcachedCache extends AbstractCache implements IMemoryCache
         */
        public function get($key)
        {
-               $return = null;
+               $return   = null;
                $cachekey = $this->getCacheKey($key);
 
                // We fetch with the hostname as key to avoid problems with other applications
@@ -94,7 +111,7 @@ class MemcachedCache extends AbstractCache implements IMemoryCache
                if ($this->memcached->getResultCode() === Memcached::RES_SUCCESS) {
                        $return = $value;
                } else {
-                       $this->logger->debug('Memcached \'get\' failed', ['result' =>  $this->memcached->getResultMessage()]);
+                       $this->logger->debug('Memcached \'get\' failed', ['result' => $this->memcached->getResultMessage()]);
                }
 
                return $return;
@@ -103,7 +120,7 @@ class MemcachedCache extends AbstractCache 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);
 
@@ -146,9 +163,17 @@ class MemcachedCache extends AbstractCache 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->memcached->add($cachekey, $value, $ttl);
        }
+
+       /**
+        * {@inheritDoc}
+        */
+       public function getName()
+       {
+               return Type::MEMCACHED;
+       }
 }