Mailinglisten-Archive |
Ich habe vor kurzem einen Counter geschrieben, welcher für verschiedene Themen verschiedene Zähler hat. Also für die Seite1 und die Seite2 separate Zähler. Wenn ein User auf Seite1 geht wird der Zähler von Seite hochgezählt, auf Seite2 der von Seite2. Die Daten werden in einer einzigen Datei gespeichert. Auf der PHP-seite die den Counter nutzen soll speichert man in der Variablen $topic (es geht natürlich auch $topic=$PHP_SELF)einfach wie der Seitenname lautet und ruft dann die Counter funktion auf. Diese zählt dann den Wert von $topic hoch und falls $topic noch nicht existiert wird einer neuer Eintrag hinzugefügt und auf 1 gesetzt. function updatestatistics() { // the file needs read/write permissions for all global $topic; if ( strlen($topic) == 0 ) { return false; } $fp = fopen ("counter.fc","r"); if ( !$fp ) { return false; } if ( !flock($fp,1)) // acquire shared lock { return false; } $i = 0; $topicfound = false; while (! feof($fp) ) { $line = chop(fgets($fp,40)); $eqpos = strpos($line,"="); if ( $topic == substr($line,0,$eqpos) ) { $num = (int) substr($line,$eqpos + 1) + 1; $lines[$i] = $topic . "=" . $num; $topicfound = true; } else { $lines[$i] = $line; } $i++; } if ( $topicfound == false ) { // append topic $lines[$i] = $topic . "=" . 1; } flock($fp,3); // release read lock if ( ! fclose($fp) ) { return false; } $fp = fopen("counter.fc","w+"); if ( ! $fp ) { return false; } if ( !flock($fp,1)) // acquire exclusive lock { return false; } while ( list ( $key,$value ) = each ($lines) ) { if ( strlen($value) > 0 ) { fwrite($fp,$value . "\n"); } } flock($fp,3); // release exclusive lock fclose($fp); } Ich werde demnächst Email Reports hinzufügen, d.h. nach z.B. 1000 Zugriffen wird eine Email an eine Emailadresse geschickt. PS: Der Code ist nicht sehr ellegant. Florian Clever Phone.: ++49 (0)761 7070268 / Fax.: ++49 (0)761 23565 Email: clever_(at)_aracnet.com / Internet: http://www.aracnet.com/~clever Zasiusstr. 45 / D-79102 Freiburg / Germany
php::bar PHP Wiki - Listenarchive