Hello,
$filename = "speichern.dat";
$lockfile = ".speichern.ldb";
Ich lege hier die Namen der zusätzlichen Dateien fest, die das Script benutzen wird. Wenn sie nicht da sind, werden sie nicht vorhanden sind, werden sie automatisch angelegt.
lockfile:
Die Lockdatei klammert das gesamte Script. Mittels der Funktion writelock() wird sie am Anfang gesperrt. Das geht nur, wenn noch kein anderer User am Werke ist. Wenn nicht gesperrt werden kann, werden keinerlei Operationen mit der speichern.dat (Zählerdatei) vorgenommen.
Nur durch Verwendung einer zusätzlichen Lockdatei kann man innerhalb des Scriptes die speichern.dat mit "w" und/oder "r" öffnen, also das Handle wechseln.
Bei Scripten, deren aktiver Teil viel Zeit benötigt, ist diese Methode nicht zu empfehlen.
Das Locking in diesem Script hat noch einen kleinen Schönheitsfehler. Da ich selber eine Schliefe für den Lockversuch aufgebaut habe, müsste eigentlich noch der Aufrufparamter LOCK_NB gesetze werden. Also
if (@flock($lh,LOCK_EX + LOCK_NB)) return $lh;
Schau Dir dazu mal die Beschreibung von flock an http://de3.php.net/manual/de/function.flock.php
Kopier das Script einfach in Dein Verzeichnis, in dem der Webserver auch schreiben darf. Dann kannst Du Stück für Stück das rauslöschen, was Du meinst nicht zu benötigen. Das Locking allerdings zuletzt, auch wenn es ohne "funktioniert". Das sieht leider nur so aus, als würde nix passieren.
Liebe Grüße aus http://www.braunschweig.de
Tom
[ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen