Shadowcrow: Datei sperren

Beitrag lesen

hi $name,

hi,

ich habe einen kleinen, primiven admin bereich erstellt, der es erlaubt texte auf der HP zu ändern, das vorgehen ist folgerndermaßen:
in einer datei stehen die texte und ich lese
$lines = file ('includes/home.txt');
mithilfe von foreach() in ein formular ein, dort können sie verändert werden und mit

if (!empty($_POST)) {  
    $z = count ($_POST);  
	if (!$handle = fopen($file_home, "w")) {  
         print "Kann die Datei $file_home nicht öffnen";  
         exit;  
    }  
	foreach ($_POST as $key => $value) {  
	if (!fwrite($handle, $_POST [$key]."\n")) {  
        print "Kann in die Datei $file_home nicht schreiben";  
        exit;  
	} else {  
	echo 'OK';}  
	}  
}

wird das ganze wieder abgespeichert. auf der hp wird der inhalt der datei wieder mit file() ausgelesen und dargestellt.
ok, das ich die datei sperren muss ist mir klar da "w" die datei ja plättet, aber es ist ja möglich das mehrere gleichzeitig den admin bereich aufrufen (A+B) und auslesen.

A liest die datei aus (inhalt:42)
B liest die datei aus (inhalt:42)
A sperrt die datei zum lesen
A schreibt neue daten (inhalt:666)
A hebt die sprerre auf
B sperrt die datei zum lesen
B schreibt neue daten (inhalt:777)
B hebt die sprerre auf

wenn die datei erst beim schreiben gesperrt könnte B ja garnicht mitbekommen das A in der zwischenzeit etwas geändert hat - auch wenn die datei über LOCK_NB gesperrt wurde.

bei der alternative die datei schon beim lesen zu sperren sehe ich das problem, das zwischen lesen und schreiben ja unendlich viel zeit vergehen kann (da benutzereingabe) und das ganze system dadurch blockiert wird, wie löse ich das problem? ich hoffe ich habe das verständlich beschrieben :-)

gruss
shadow

p.s.
den artikel von christian seiler habe ich gelesen, aber so richtig schlau bezüglich meines problems bin ich nicht draus geworden.

--
Vor dem Parser und auf hoher See sind wir allein in Gottes Hand