Text Resizer Text Resizer
February 23rd, 2012
You're browsing: marcelpociot.de » PHP » Session-Handling mit Memcached

Session-Handling mit Memcached

Posted on Mai 11 in PHPby PrintText Resizer Text Resizer

Sessions begegnen uns in PHP jeden Tag.
Über die Geschwindigkeit machen wir uns dabei eher selten Gedanken, doch gerade bei Webseiten mit viel Traffic erzeugen Sessions viele Dateizugriffe die unnötige sind.
Doch wie soll man das Problem umgehen?
Mit dem Memcached Server bekommen die Entwickler einen Server in die Hände gelegt, der es ermöglicht Daten in dem Arbeitsspeicher des Servers zu schreiben.
Das Prinzip von Memcached ist denkbar einfach – ein bestimmter Teil des Arbeitsspeichers wird reserviert und über einen kleinen Server können dort Daten abgelegt und ausgelesen werden.
Was dort gespeichert wird, ist prinzipiell egal. Man kann also nicht nur seine Sessions sondern zum Beispiel auch MySQL Resultate in Memcached speichern.

Doch warum sollte ich meine Session im Arbeitsspeicher ablegen?
Memcache macht nicht für jede Seite Sinn. Wenn man täglich 50 Besucher hat wird die Festplatte wohl kaum Probleme bekommen für diese 50 Besucher die Session aus der Festplatte auszulesen.
Wenn es allerdings einige Tausend Besucher werden hat die Festplatte schon etwas mehr zutun und blockiert so möglicherweise andere wichtige I/O Prozesse.
Hier kommt nun Memcached ins Spiel.
Memcached installieren
Zu allererst braucht man natürlich einen Memcached Server.
Auf einem Debian basierten System kann man diesen mit dem Befehl
apt-get install memcached
installieren.
Danach sollte man einen Blick in die Konfigurationsdatei werfen. Diese findet man unter /etc/memcached/memcached.conf
Standardmäßig erlaubt Memcached nur Zugriffe von localhost. Sofern man also keinen eigenen Memcached-Server betreiben will ist das auch in Ordnung so.
Nachdem man die Konfigurationsdatei den eigenen Bedürfnissen angepasst hat muss der Server noch gestartet werden.
/etc/init.d/memcached start

Der Server läuft also und wartet brav auf Daten die er speichern oder abrufen soll. Was fehlt uns also noch?
Genau , der Memcache PHP Client.
Um diesen zu installieren gibt es zwei Möglichkeiten.
Entweder via apt-get / aptitude / etc. :
apt-get install php5-memcache
Oder via PEAR:
pear install pecl/memcache

Freundlicherweise wird man direkt gefragt ob man Memcache fürs Session-Handling nutzen möchte:
Enable memcache session handler support? [yes] : yes

Jetzt müssen wir in der php.ini noch das memcache Modul aktivieren:
extension=memcache.so

So! Das wars auch schon – jetzt kann memcache genutzt werden.
Um jetzt PHP mitzuteilen das wir die Session im Memcache Server ablegen möchten, gibt es die nützliche Einstellung session.save-handler

Der save-handler für memcache sieht so aus:

session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

Danach muss nur noch der Apache Server neu gestartet werden und wir sind fertig.
Viel Spass beim optimieren.

Popularity: 100% [?]

4 Comments

Trackbacks / Pingbacks

Gib deinen Senf ab

Back to Top