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 PCTweaks.de-News-Seite benutzt wird:
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.PHP-Code:$ergebnis_mem = memcache_get($memcache, $sid);
if(!$ergebnis_mem) {
$anfrage = mysql_query("SELECT * FROM pctweaks_news WHERE sid = $sid");
$cache = mysql_fetch_array($anfrage);
memcache_set($memcache, $sid, $cache, MEMCACHE_COMPRESSED, '60');
$ergebnis_mem = memcache_get($memcache, $sid);
}
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:
Hier braucht nicht darauf geachtet werden, ob die Daten bereits vorhanden sind, mittels memcache_replace() werden sie sowieso überschrieben.PHP-Code:$anfrage = mysql_query("SELECT * FROM pctweaks_news WHERE sid = $sid");
$cache = mysql_fetch_array($anfrage);
memcache_replace($memcache, $sid, $cache, MEMCACHE_COMPRESSED, '60');
Als IDs für Memcache werden jeweils die Artikel-IDs (sid) verwendet.


LinkBack URL
About LinkBacks

Mit Zitat antworten
