Memcached auf dem Uberspace

Profilbild von Florian Schmidt
Vom 16. Mai 2014

Memcached ist ein als FOSS veröffentlichter Cache-Server, der beliebige Daten im Arbeitsspeicher eines Servers für einen erneuten Abruf vorhält. Eingesetzt wird er vor allem bei dynamischen Webseiten zur Leistungsverbesserung, die eine Aufrufzahl haben. Beispiele dafür sind unter anderem Wikipedia, Twitter und Youtube.

Dieser Artikel wurde zuletzt vor über einem Jahr aktualisiert. Die Inhalte könnten inzwischen nicht mehr aktuell sein.

Memcached speichert Daten in einem Key-Value Verfahren temporär oder dauerhaft im Arbeitsspeicher. Gedacht ist dieses Verfahren vor allem für die temporäre Speicherung von Ergebnissen aus Datenbankabfragen.

Installation auf dem Uberspace

Die eigentliche Installation von memcached gestaltet sich dank Toast sehr einfach. Tatsächlich ist dafür nur der Befehl toast arm memcached notwendig.

Jetzt können wir memcached direkt in der Konsole aufrufen. Dies hat aber diverse Nachteile. So würde bei einem direkten Aufruf ohne Argumente memcached für alle Nutzer des Servers offen sein. Deshalb starten wir memcached mit der Option -s [file]. Dadurch können wir einen UNIX-Socket an dem entsprechenden Ort erstellen.

Nun wollen wir mit Hilfe der daemontools daraus einen immer laufenden Dienst machen. Wir richten uns also wie dort beschrieben ein eigene Instanz ein:

$  test -d ~/service || uberspace-setup-svscan

Dann erstellen wir den memcached-Daemon:

$ mkdir ~/etc/run-memcached
$ cat <<__EOF__  > ~/etc/run-memcached/run
#! /bin/sh
exec memcached -s /home/may/memcached.socket 2>&1
__EOF__
$ chmod +x ~/etc/run-memcached/run

Nun folgt noch das Logging:

$ mkdir ~/etc/run-memcached/log
$ cat <<__EOF__ > ~/etc/run-memcached/log/run
#! /bin/sh
exec multilog t ./main
__EOF__
$ chmod +x ~/etc/run-memcached/log/run

Damit dies nun auch wirklich als Daemon läuft müssen wir noch einen Symlink nach ~/service/ anlegen:

$ ln -s ~/etc/run-memcached ~/service/memcached

Jetzt können wir unter /home/USER/ den Unix Socket finden.

Integration in PHP

Für die Integration in PHP benutzen wir das PECL Modul Memcached. Da dies die Bibliothek libmemcached vorraussetzt gestaltet sich die Installation zur Zeit ein bisschen umständlicher. Denn wir müssen diese zuerst installieren.

Einmal der gesamte Installationsprozess:

$ toast arm libmemcached
[Hier folgt nun eine lange Ausgabe, die ich hier weglasse]
$ pear config-create ~ ~/.pearrc
$ uberspace-install-pecl memcached

Danach ist die PECL-Erweiterung installiert und kann sofort verwendet werden. Da wir memcached über einen UNIX-Socket verwenden wollen, müssen wir ihn in PHP beispielsweise so einbinden:

<?php
$m = new Memcached();
$m->addServer('/home/USER/memcached.socket',0);
$m->set('testkey', 'Hallo Welt');
echo $m->get('testkey');
?>

Speichern wir dies in einer Datei und führen die aus, so erhalten wir "Hallo Welt".

Weitere Funktionen und eine weitergehende Dokumentation zu Memcached findet sich unter http://www.php.net/manual/de/book.memcached.php.

  • # Memcached
  • # Uberspace
  • # Webserver

Du suchst die Kommentare?

Keine Sorge, die sind nicht verloren! Es dauert aber noch eine Weile, bis sie wieder zu sehen sind und du neue Kommentare hinterlassen kannst.

Netzleben ist frisch von einer alten Kirby-Website auf eine neue, Statamic-basierte Website umgezogen. Leider ist das Plugin für Kommentare mit Statamic 3 noch nicht kompatibel.