Memcache bzw. Memcached dient dazu, häufig benutze Daten im RAM zu halten und Mysql-Zugriffe zu sparen. Hier ein einfaches Beispiel, welches auch für die Techfacts.de-News-Seite benutzt wird:
PHP-Code:
$ergebnis_mem = memcache_get($memcache, $sid);
if(!$ergebnis_mem) {
$anfrage = mysql_query("SELECT * FROM Techfacts_news WHERE sid = $sid");
$cache = mysql_fetch_array($anfrage);
memcache_set($memcache, $sid, $cache, MEMCACHE_COMPRESSED, '60');
$ergebnis_mem = memcache_get($memcache, $sid);
}
Zuerst wird $ergebnis_mem mit dem Inhalt des Memcaches der jeweiligen ID befüllt. Bleibt die Variable leer (es ist also nichts im RAM) wird die Mysql-Anfrage gestartet, die die Daten holt. memcache_set() packt die Daten mit einer Haltbarkeit von 60 Sekunden in den RAM und speichert sie dabei on-the-fly mit gzip. Danach (und das ist wichtig) wird $ergebnis_mem mit den eben gesetzten Daten gefüttert und steht dann zur Verfügung.
Die 60s können natürlich auch höher gesetzt werden, allerdings muss dann darauf geachtet werden, dass beim ändern eines Eintrags (in diesem Fall einer News) auch das entsprechende Memcache-Item aktualisiert wird:
PHP-Code:
$anfrage = mysql_query("SELECT * FROM Techfacts_news WHERE sid = $sid");
$cache = mysql_fetch_array($anfrage);
memcache_replace($memcache, $sid, $cache, MEMCACHE_COMPRESSED, '60');
Hier braucht nicht darauf geachtet werden, ob die Daten bereits vorhanden sind, mittels memcache_replace() werden sie sowieso überschrieben.
Als IDs für Memcache werden jeweils die Artikel-IDs (sid) verwendet.