Christian Seiler: Datei sperren

Beitrag lesen

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):

  1. 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).

  2. 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