Samstag, 9. August 2008

XCache Variablen ODER: "superglobale Variablen"

So ganz kurze Einführung in den Variablenspeicher von XCache.

Mit dem Artikel http://murksfurtz.blogspot.com/2008/08/shmop-beispiel-fr-php.html hab ich ja schon mal aufgezeigt wie man das shmop Modul benutzen kann... nun ist dieses shmop nicht gerade sehr unkompliziert... allerdings sehr effizient, was den Speicherverbrauch angeht.

XCache ist dagegen um ein vielfaches einfacher anzuwenden. Nehmen wir wieder das Beispiel der Anzahl, der sich auf der Seite befindenen User. Normalerweise müsste (ohne Cache), jeder Client bei jedem Seitenaufruf die Datenbank belästigen um die Anzahl der eingeloggten User zu ermitteln.

Folgendes Skrip reicht schon aus um das ganze zu cachen:

//variable im cache vorhanden?
if (xcache_isset('user_online')) {
//wenn ja, hole den wert aus dem cache
$useronline = xcache_get('user_online');
}
//ansonsten hole wert aus datenbank und schreibe in den cache
else {
$result = mysql_query('SELECT COUNT(*) FROM blubb WHERE bedingung');
$daten = mysql_fetch_array($result);
$useronline = $daten[0];
//erstelle variable im cache, lebensdauer 30 sekunden
xcache_set('user_online', $useronline, 30);
}

So, nun wird die Datenbankabfrage maximal alle 30 Sekunden ausgeführt. Bei mehreren hundert oder tausend Nutzern online, erspart man MySQL schon etwas Arbeit.

XCache bietet im Übrigen noch ein paar interessante Funktionen. So lassen sich Variablen beispielsweise mit "xcache_inc()" hochzählen oder mit "xcache_dec()" herunterzählen.

XCache: http://xcache.lighttpd.net/

XCache statisch in PHP einbinden: http://murksfurtz.blogspot.com/2008/08/php-modul-nachtrglich-statisch.html

Keine Kommentare: