Hi AllesMeins,
flock($fp, LOCK_EX);
An dieser Stelle prüfst du ja gar nicht, ob das Locking erfolgreich war!! Die Funktion flock() versucht normalerweise mehrfach hintereinander die Datei zu sperren, ist dies nicht möglich, so gibt es als Rückgabewert false und das Script arbeitet weiter.
Um genauer kontrollieren zu können, wie flock() arbeitet, solltest du das Non-Blocking aktivieren und flock mehrfach hintereinander bis die Datei gesperrt ist:
$lock = false;
// Bis zu 5 mal versuchen die Datei zu sperren
for($i = 0; $i < 5; $i ++) {
// LOCK_NB verhindert, dass flock selber es mehrfach versucht
$lock = flock($fp, LOCK_EX + LOCK_NB);
// Im Erfolgsfall Schleife abbrechen
if($lock) break;
// Ansonsten 8 Milli-Sekunden warten und erneut probieren
[link:http://php.nt/usleep@title=usleep](8000);
}
// Prüfung von $lock
if(!$lock) {
// Fehlerausgabe, Datei konnte nicht gesperrt werden
}
else {
// weiter mit der Datei arbeiten
}
MfG, Dennis.