Hallo,
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
Meine Idee wäre die folgende (stark vereinfacht gesagt):
-
Auslesen des Inhalts: Datei mit LOCK_SH sperren, Inhalt ausgeben, Datei schließen. Hidden-Feld generieren, das den ursprünglichen Inhalt der Datei enthielt (oder einen SHA1-Hash davon oder was auch immer).
-
Schreiben des Inhalts: Datei mit LOCK_EX sperren, Inhalt auslesen, vergleichen mit mitgesendetem Hidden-Feld;
* wenn übereinstimmt: Datei neu schreiben mit neuem Inhalt des Users,
Datei schließen.
* wenn nicht übereinstimmt: Datei schließen, Warnmeldung an den User
ausgeben und ihm mitteilen, was er überschreiben würde + neuen Inhalt
im jetztigen Hidden-Feld mitsenden so dass er das Formular erneut
absenden kann nur dass diesmal das Überschreiben klappen würde.
Hinweis: Mit file() solltest Du keine Dateien auslesen, weil file() sie nicht sperrt. Nimm lieber die Methoden die ich in meinem Artikel beschrieben habe.
Viele Grüße,
Christian