Linux.memcached: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→PHP) |
Root (Diskussion | Beiträge) |
||
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
* der Linux Server- | * der Linux Server-Dämon "memcached" bietet eine Semi-Persistente Speicherung von Key+Value Paaren an. Die Daten bleiben erhalten bis der Memcache-Server neu gestartet wird. | ||
* TWebShop konnektiert mit dem PHP-Modul "memcached" 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. | * TWebShop konnektiert mit dem PHP-Modul "memcached" 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. | ||
Zeile 8: | Zeile 8: | ||
== Installation == | == Installation == | ||
=== Server Dienst === | === Linux-Server Dienst "memcached" === | ||
# Vorbereitungen, Memcached, | # Vorbereitungen, Memcached, | ||
Zeile 17: | Zeile 17: | ||
systemctl start memcached | systemctl start memcached | ||
=== Test === | ==== Test ==== | ||
nc localhost 11211 | nc localhost 11211 | ||
Zeile 37: | Zeile 37: | ||
MEMCACHED_PARAMS="" | MEMCACHED_PARAMS="" | ||
=== PHP Module === | === PHP Module "memcached" === | ||
* OrgaMon verwendet nicht PHP "memcache" sondern nur PHP "memcached" | |||
zypper install php5-pear | zypper install php5-pear | ||
zypper install php5-devel | zypper install php5-devel | ||
zypper install libmemcached-devel | |||
# PHP-Modul | # PHP-Modul Memcached installieren | ||
cd /usr/include/libmemcached-1.0 | |||
pecl install memcached | |||
pecl install | |||
# im Verzeichnis /etc/php5/conf.d | # im Verzeichnis /etc/php5/conf.d | ||
joe | joe memcached.ini | ||
# Datei: /etc/php5/conf.d/memcache.ini | # Datei: /etc/php5/conf.d/memcache.ini | ||
Zeile 55: | Zeile 57: | ||
extension=memcache.so | extension=memcache.so | ||
# | # erste Prüfung ob das Modul nun vorhanden ist? | ||
# | php --modules | ||
# Apache das neue Modul laden lassen starten lassen | |||
rcapache2 restart | rcapache2 restart | ||
# nun ein phpinfo Website aufrufen ob es geklappt hat | |||
# und memcached im PHP zur Verfügung steht | |||
== Verwendung == | == Verwendung == |
Aktuelle Version vom 15. Juli 2016, 09:13 Uhr
- der Linux Server-Dämon "memcached" bietet eine Semi-Persistente Speicherung von Key+Value Paaren an. Die Daten bleiben erhalten bis der Memcache-Server neu gestartet wird.
- TWebShop konnektiert mit dem PHP-Modul "memcached" 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
- Die Funktion XMLRPC.Versandkosten speichert ihr Ergebnis im memcache ab, sobald der Parameter Systemeinstellungen#memcacheHost gesetzt ist.
Installation
Linux-Server Dienst "memcached"
# 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 "memcached"
- OrgaMon verwendet nicht PHP "memcache" sondern nur PHP "memcached"
zypper install php5-pear zypper install php5-devel zypper install libmemcached-devel # PHP-Modul Memcached installieren cd /usr/include/libmemcached-1.0 pecl install memcached # im Verzeichnis /etc/php5/conf.d joe memcached.ini # Datei: /etc/php5/conf.d/memcache.ini # Nur diese Zeile reicht extension=memcache.so # erste Prüfung ob das Modul nun vorhanden ist? php --modules # Apache das neue Modul laden lassen starten lassen rcapache2 restart # nun ein phpinfo Website aufrufen ob es geklappt hat # und memcached im PHP zur Verfügung steht
Verwendung
Console
memdump --servers=localhost
Pascal
.\PASconTools\memcache.pas
PHP
TWebShop\core\semipersistent_sequence.php
// Stellt sicher, dass entweder
// * die Verbindung zum MemCache besteht
// * c_spc = -1, das bedeutet der Server läuft nicht
function semiEnsureOpen() {
global $m_spc;
global $c_spc;
global $errorlist;
// Init?
if ($m_spc == null) {
$m_spc = new Memcached(TWEBSHOP_ID . SEQUENCE_NAMESPACE);
if ($m_spc->addServer(SEQUENCE_HOST, SEQUENCE_PORT)) {
$m_spc->add(SEQUENCE_NAME . SEQUENCE_NAMESPACE, 0);
} else {
trigger_error("Verbindung zu " . SEQUENCE_HOST . " fehlgeschlagen!", E_USER_ERROR);
$c_spc = -1;
$errorlist->add("memcached: Verbindung zu " . SEQUENCE_HOST . " fehlgeschlagen!");
}
}
}
// liefert einfach die nächste Nummer eines
// Zählers, der den "semi"-"persistent" ist,
// das heisst er lebt länger als das Skript
// erst durch einen Server-Neustart wird dessen
// Wert auf "0" gesetzt. In einer Multi-User
// Umgebung (wie durch das Internet massiv
// gegeben) kann so ein fairer Zähler implementiert
// werden.
function getSemiPersistentSequence() {
global $m_spc;
global $c_spc;
// Init?
semiEnsureOpen();
// Increment!
if ($c_spc < 0)
$c_spc += -1;
else
$c_spc = $m_spc->increment(SEQUENCE_NAME . SEQUENCE_NAMESPACE, 1);
// Return
return $c_spc;
}
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