Liebe Selfer,
habe mir was überlegt und möchte eure Meinung wissen. Mein Vorschlag zu obigem Problem:
Man flock()ed nicht die eigentlich zu bearbeitende Datei, sondern legt eine Dummy-Datei auf dem Server ab, die dort auch verbleibt. Wenn diese Datei geflock()ed ist, dann muss das Script warten, bis sie wieder freigegeben wird. Das soll Lesezugriffe à la $f=file() vermeiden, da dadurch in einer race condition möglicherweise Daten verloren gehen könnten. Meine Dummy-Datei heißt "post.lock".
$lockdatei = "post.lock";
$datendatei = "daten.dat";
flock($lockdatei, LOCK_EX);
$gaestebuch = file($datendatei);
// $gaestebuch wird modifiziert
$schreibdatei = fopen($datendatei, "wb");
foreach($gaestebuch as $schreibwert) fputs($schreibdatei, trim($schreibwert)."\r\n");
fclose($datei);
fclose($lock);
Was meint ihr? Habe ich eine mögliche race condition damit etwas entschärft?
Liebe Grüße aus Ellwangen,
Felix Riesterer.