Ich habe zwei Instanzen von Memcached eingerichtet, die auf zwei Servern ausgeführt werden. Wie richte ich die Hosts in der Joomla-Cache-Einstellung ein?Wie richte ich zwei memcached Server-Hosts in der Joomla-Cache-Einstellung ein?
Antwort
Sie haben die configuration.php Datei auf dem Stammordner bearbeiten und die Server-Details hinzufügen. Finden Sie die Cache-Zugriffe auf Variablen $caching, $cache_handler, $memcache_server_host, $memcache_server_port.
sie setzen als
public $caching = '2';
public $cache_handler = 'memcache';
public $memcache_server_host = 'localhost';//Give your memcache server address
public $memcache_server_port = '11111'; //Memcache server port
In der Bibliotheken folgt/joomla/cache/storage/memcache.php Datei fand ich diese Zeilen
/*
* This will be an array of loveliness
***@todo: multiple servers***
* $servers = (isset($params['servers'])) ? $params['servers'] : array();
*/
Wie Sie wollten Um zwei verschiedene Memcache-Server hinzuzufügen, können Sie sehen, dass es sich noch in der Entwicklung befindet. Aber es gibt einen Weg --- Durch das Hacken von Kerndateien.
nicht den angewandten Methoden VERSUCHEN UNTER IN UMWELT PRODUKTIONS
Obwohl es gefährlich ist, mit Core-Dateien zu spielen, aber Sie können, indem Sie die Methode, die ich vorschlagen, wird nun auf eigene Gefahr tun. nehmen Sie zuerst Backup.
Erstellen Sie eine Sicherungskopie der Dateien (configuration.php und libraries/joomla/cache/storage/memcache.php und libraries \ vendor \ joomla \ session \ Joomla \ Session \ Storage \ Memcache.php). In der memcache Datei nach diesem Code in der Datei
$server['host'] = $config->get('memcache_server_host', 'localhost');
$server['port'] = $config->get('memcache_server_port', 11211);
// Create the memcache connection
self::$_db = new Memcache;
self::$_db->addServer($server['host'], $server['port'], $this->_persistent);
$memcachetest = @self::$_db->connect($server['host'], $server['port']);
if ($memcachetest == false)
{
throw new RuntimeException('Could not connect to memcache server', 404);
}
Fügen Sie diesen Code unter
//Give second server details like this
$server['host2'] = $config->get('memcache_server_host2', 'localhost');
$server['port2'] = $config->get('memcache_server_port2', 11211);
// Create the memcache connection
self::$_db = new Memcache;
self::$_db->addServer($server['host2'], $server['port2'], $this->_persistent);
$memcachetest = @self::$_db->connect($server['host2'], $server['port2']);
if ($memcachetest == false)
{
throw new RuntimeException('Could not connect to memcache server', 404);
}
in der configuration.php Fügen Sie diese Zeilen
public $memcache_server_host2 = 'localhost';//Give your second memcache server address
public $memcache_server_port2 = '11111'; //Memcache second server port
Jetzt zum Speichern von Sitzungen, die Sie müssen Dateien bearbeiten, die Sitzung Cache speichert
In den Dateibibliotheken \ Vendor \ Joomla \ Sessio Joomla \ Session \ Storage \ n \ Memcache.php Sie diese Zeile finden
$this->_servers = array(
array(
'host' => isset($options['memcache_server_host']) ? $options['memcache_server_host'] : 'localhost',
'port' => isset($options['memcache_server_port']) ? $options['memcache_server_port'] : 11211
)
);
Ändern Sie diese zu
$this->_servers = array(
array(
'host' => isset($options['memcache_server_host']) ? $options['memcache_server_host'] : 'localhost',
'port' => isset($options['memcache_server_port']) ? $options['memcache_server_port'] : 11211
),
array(
'host2' => isset($options['memcache_server_host2']) ? $options['memcache_server_host2'] : 'localhost',
'port2' => isset($options['memcache_server_port2']) ? $options['memcache_server_port2'] : 11211
)
);
ich zwei memcache Server. Wie definiere ich einen anderen Host und Port? – James
@James Ich habe eine alternative Lösung gegeben. Hoffe, das funktioniert. –
danke. Scheint so, als müsste ich auf den produktionsfertigen Code von Joomla warten, da ich ihn für die Produktionsumgebung verwenden muss. – James