Tom: File-Locking, 3. "Entwicklungsstufe"

Beitrag lesen

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