Linux.memcached

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

der Linux Server Dienst "memcache" bietet eine Semi-Persistente Speicherung von Key+Value Paaren an. Die Daten bleiben erhalten bis der Memcache-Server neu gestartet wird.

  • TWebShop konnektiert mit PHP auf diesen Server um eine Round-Robin Sequenz zur Erhalten. Darüber wählen alle beteiligten laufenden WebShop-Forks einen der laufenden XMLRPC- Dienste aus. Eine faire Lastverteilung wird so erreicht.
XMLSERVER-LaufendeNummer = inc(RoundRobinsequenz) mod XMLSERVER-AnzahlDienste

Installation

Server Dienst

# Vorbereitungen, Memcached, 
# PHP pecel
#
zypper install memcached
systemctl enable memcached
systemctl start memcached

Test

nc localhost 11211
version
#
# Die Antwort des Servers sollte sein
#
VERSION 1.4.2

Mehr als nur lokalen Zugriff erlauben

Als default läuft der memcache Server mit einem "-l <IP-Adresse>" Paramter. Zumeist ist eine Beschränkung auf die lokale Maschine gegeben: "-l 127.0.0.1". Um ihn im Netzwerk sichtbar zu machen muss dieser Anteil der Parameter aus dem Programmaufruf entfernt werden.

joe /etc/sysconfig/memcached
#
# "" bedeute ALLE Netzwerkinterfaces, Sicherheits-Relevant
#
MEMCACHED_PARAMS=""

PHP Module

zypper install php5-pear
zypper install php5-devel

# PHP-Modul Memcache installieren
# Es kommt eine Frage, ob memcache so installiert werden soll, 
# dass Session Variable dort gespeichert werden können, dies
# ist für meinen Fall nicht notwendig
pecl install memcache

# im Verzeichnis /etc/php5/conf.d
joe memcache.ini

# Datei: /etc/php5/conf.d/memcache.ini
# Nur diese Zeile reicht
extension=memcache.so

#
# prüfen + starten
rcapache2 restart
php --modules

Verwendung

Console

memdump --servers=localhost

Pascal

PHP

$m = null;

function getSemiPersistenCounter() {

global $m;

if ($m==null) {
 $m = new Memcache(); 
 $m->connect("localhost");
 $m->add("u-xmlrpc-robin", 0);
} 
return $m->increment("u-xmlrpc-robin", 1);

}

Putty

Mit Putty im Telnet-Modus auf den Host mit dem Port 11211 konnektieren.

version

eingeben oder

incr sequence.69VVTGKZ1 0


telnet 10.0.0.2 11211

Alle Werte löschen

via telnet

flush_all

via command-line

memcflush --servers=localhost:11211

Werte

sequence.69VVTGKZ1

Die Round-Robin-Sequenz des TWebShop