]> git.mxchange.org Git - friendica.git/commitdiff
Add support for multiple Memcached servers
authorHypolite Petovan <mrpetovan@gmail.com>
Mon, 5 Mar 2018 04:28:49 +0000 (23:28 -0500)
committerHypolite Petovan <mrpetovan@gmail.com>
Mon, 5 Mar 2018 04:28:49 +0000 (23:28 -0500)
- Updated htconfig documentation

doc/htconfig.md
src/Core/Cache.php
src/Core/Cache/MemcachedCacheDriver.php

index 0355c3df274582422061bda720d92961c14bb7e6..b6fd66bc26a005b68eaef50be86872fc865e295a 100644 (file)
@@ -62,8 +62,7 @@ Example: To set the automatic database cleanup process add this line to your .ht
 * **cache_driver** ([database]|memcache|memcached) - Whether to use Memcache or Memcached to store temporary cache
 * **memcache_host** - Host name of the memcache daemon. Default is '127.0.0.1'.
 * **memcache_port** - Port number of the memcache daemon. Default is 11211.
-* **memcached_host** - Host name of the memcached daemon. Default is '127.0.0.1'.
-* **memcached_port** - Port number of the memcached daemon. Default is 11211.
+* **memcached_hosts** - Array of Memcached servers info [host, port(, weight)]. Default is [['127.0.0.1', 11211]]
 * **no_count** (Boolean) - Don't do count calculations (currently only when showing albums)
 * **no_oembed** (Boolean) - Don't use OEmbed to fetch more information about a link.
 * **no_smilies** (Boolean) - Don't show smilies.
index aeda29e849be94ba48e7397419b22a8ec506d646..a1b1ecb9c171c199d47b58443a885f71c9c04a87 100644 (file)
@@ -36,10 +36,9 @@ class Cache extends \Friendica\BaseObject
                                self::$driver = new Cache\MemcacheCacheDriver($memcache_host, $memcache_port);
                                break;
                        case 'memcached':
-                               $memcached_host = Config::get('system', 'memcached_host', '127.0.0.1');
-                               $memcached_port = Config::get('system', 'memcached_port', 11211);
+                               $memcached_hosts = Config::get('system', 'memcached_hosts', [['127.0.0.1', 11211]]);
 
-                               self::$driver = new Cache\MemcachedCacheDriver($memcached_host, $memcached_port);
+                               self::$driver = new Cache\MemcachedCacheDriver($memcached_hosts);
                                break;
                        default:
                                self::$driver = new Cache\DatabaseCacheDriver();
index 9101c79195c4d6d66d76eaa36c484c4596e11cda..8f1752cbed0ce5169b4b976abbb674e552f9fc73 100644 (file)
@@ -17,7 +17,7 @@ class MemcachedCacheDriver extends BaseObject implements ICacheDriver
         */\r
        private $memcached;\r
 \r
-       public function __construct($memcached_host, $memcached_port)\r
+       public function __construct(array $memcached_hosts)\r
        {\r
                if (!class_exists('Memcached', false)) {\r
                        throw new \Exception('Memcached class isn\'t available');\r
@@ -25,8 +25,10 @@ class MemcachedCacheDriver extends BaseObject implements ICacheDriver
 \r
                $this->memcached = new \Memcached();\r
 \r
-               if (!$this->memcached->addServer($memcached_host, $memcached_port)) {\r
-                       throw new \Exception('Expected Memcached server at ' . $memcached_host . ':' . $memcached_port . ' isn\'t available');\r
+               $this->memcached->addServers($memcached_hosts);\r
+\r
+               if (count($this->memcached->getServerList()) == 0) {\r
+                       throw new \Exception('Expected Memcached servers aren\'t available, config:' . var_export($memcached_hosts, true));\r
                }\r
        }\r
 \r