Mittwoch, 6. August 2008

shmop Beispiel für PHP

Damit ichs nicht vergesse und mich später nochmal damit beschäftigen kann, poste ich nun ein kleines shmop Beispiel. Habe es angewendet um die Anzahl der sich auf einer Internetseite befindenen Nutzer in einer Variablen zwischenzuspeichern. Diese Variable wird im RAM gehalten und jeder PHP Prozess kann auf diese Variable zugreifen. Das war nur ein erster Versuch mit diesem Modul. Ich werde später sicher noch einen dicken Beitrag zum Thema Caching bringen.


$jetzt = time();
//öffne zeitspeicher zum lesen
$shm_id = shmop_open(0xff2, "w", 0, 0);
//wenn nicht vorhanden, erstelle zeitspeicher und schreibe als zeit "1" rein
if (!$shm_id) {
$shm_id = shmop_open(0xff2, "c", 0644, 100);
shmop_write($shm_id, '1', 0);
}
//erstelle useronline speicher
$shm_id2 = shmop_open(0xff3, "w", 0, 0);
//wenn nicht vorhanden erstelle den speicher
if (!$shm_id2) {
$shm_id2 = shmop_open(0xff3, "c", 0644, 100);
}
//lese zeit aus dem zeitspeicher
$zeit_alt = shmop_read($shm_id, 0, 0);
//wenn zeitunterschied größer als 30 hole aktuelle useronline zahl und schreib userzahl und aktuelle zeit in den speicher
if ($jetzt - $zeit_alt > 30) {
$result = mysql_query('SELECT COUNT(*) FROM blubb WHERE bedingung');
$daten = mysql_fetch_array($result);
$online = $daten[0];
shmop_write($shm_id2, $online, 0);
shmop_write($shm_id, $jetzt, 0);
}
else {
$useronline = shmop_read($shm_id2, 0, 0);
}
shmop_close($shm_id);
shmop_close($shm_id2);

shmop: http://www.php.net/manual/de/book.shmop.php

böh... doofe Formatierung des Codes...


Keine Kommentare: