Hello,
Chritians Einwand ist ebenfalls berechtigt. Also wäre _eine_ saubere
Lösung nun diese:
for($lockcount = 0; $lockcount < 5; $lockcount++)
{
if (@flock($fp, 2)) ## exclusives Locking!
{
fputs($fp, $file);
fflush($fp);
flock($fp, 3);
break;
}
else
{
usleep(8000); #8ms warten. Funktioniert nicht bei WIN
# Fehlerbehandlung nacxh Belieben
# Wenn Fehlerzähler >= 4. ggf Exception generieren
}
}
fclose($fp);
Festzustellen wäre noch, ob flock() nicht von sich aus auf der Systemebene mehrere Lockversuche durchführt. Beim guten alten DOS waren das defaultmäßig z.B. immer fünf Versuche in Seeehr kurzem Abstand. Außerdem sollte man für den Misserfolgszeit eine Delay-Time einbauen (usleep()).
siehe auch:
http://de2.php.net/manual/de/function.flock.php
http://de3.php.net/manual/en/function.fflush.php
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen