X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FCache%2FMemcachedCacheDriver.php;h=9e9c00f0b89f25f9ffbc943ccce6aa7f4673dec2;hb=5881fa7229a25efd382668e6cd4a3af0f8d3198c;hp=d4aab15c92430045bb5d058ca2a6889afdcf28af;hpb=80a4e6263fd53f83a710d2a2e6c57baae38cb14b;p=friendica.git diff --git a/src/Core/Cache/MemcachedCacheDriver.php b/src/Core/Cache/MemcachedCacheDriver.php index d4aab15c92..9e9c00f0b8 100644 --- a/src/Core/Cache/MemcachedCacheDriver.php +++ b/src/Core/Cache/MemcachedCacheDriver.php @@ -4,10 +4,13 @@ namespace Friendica\Core\Cache; use Friendica\Core\Cache; +use Exception; +use Memcached; + /** * Memcached Cache Driver * - * @author Hypolite Petovan + * @author Hypolite Petovan */ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDriver { @@ -19,18 +22,34 @@ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDr */ private $memcached; + /** + * Due to limitations of the INI format, the expected configuration for Memcached servers is the following: + * array { + * 0 => "hostname, port(, weight)", + * 1 => ... + * } + * + * @param array $memcached_hosts + * @throws \Exception + */ public function __construct(array $memcached_hosts) { if (!class_exists('Memcached', false)) { - throw new \Exception('Memcached class isn\'t available'); + throw new Exception('Memcached class isn\'t available'); } - $this->memcached = new \Memcached(); + $this->memcached = new Memcached(); + + array_walk($memcached_hosts, function (&$value) { + if (is_string($value)) { + $value = array_map('trim', explode(',', $value)); + } + }); $this->memcached->addServers($memcached_hosts); if (count($this->memcached->getServerList()) == 0) { - throw new \Exception('Expected Memcached servers aren\'t available, config:' . var_export($memcached_hosts, true)); + throw new Exception('Expected Memcached servers aren\'t available, config:' . var_export($memcached_hosts, true)); } } @@ -42,7 +61,7 @@ class MemcachedCacheDriver extends AbstractCacheDriver implements IMemoryCacheDr // We fetch with the hostname as key to avoid problems with other applications $value = $this->memcached->get($cachekey); - if ($this->memcached->getResultCode() === \Memcached::RES_SUCCESS) { + if ($this->memcached->getResultCode() === Memcached::RES_SUCCESS) { $return = $value; }