Hello,
Gut! Das mit dem w+ ist sicher trivaler Fehler, macht aber auch nichts, da ich ja neu schreiben möchte!
Nein, das ist ein schwerer Fehler, da die Datei zum Zeitpunkt des Schreibens nicht gesperrt ist.
Trotzdem kann ich mir nicht vorstellen, was schief läuft! Wenn A lesen will und B lesen will, muss halt B warten!
Ja genau. Aber Du lässt B nicht warten, sondern für einen kurzen Moment machen was es will.
Wenn dann A und B gleichzeitig schreiben wollen, ist IHMO das selbe, A erhält als erstes den Zuschlag und B muss warten! Das einige was passieren kann, ist das A und B den gleichen Zählerstand auslesen und der Zähler dann halt um 1 statt um 2 hochgeht!
Und wenn 100 B's gelesen haben, dann geht der Zähler ben nur um eins hoch statt um 100.
Mit Dir will ich nicht fliegen und Brot kauf ich auch nicht von Dir...
Sieht schon nicht schlecht aus, vorallem der Zugriff mit einem Filehandler erscheint mir sinnvoll!
Die Konstantennamen (LOCK_EX etc) kannte ich noch gar nicht! Musste mir gleich mal 'ne aktuelle PHP-Doc runterladen, meine war noch von 2001! ;-)
Warum nutzt Du nicht die Online-Version? Sitzt Du in der Internet-Wüste?
Ich hab noch ein bisschen recherchiert: Auf http://www.php.net/manual/de/function.flock.php steht, dass wenn PHP als CGI-Modul läuft (meinen Provider leider ja), das es vorkommen kann das es nicht funzt!
Was soll da nicht funktionieren? (meintest Du "funktionieren?". Wenn Du mit mir postest, dann vermeide bitte diese Slang-Ausdrücke)
Das Script wird aufgerufen und assoziiert sein Runtime. Das macht dann alles das, was ein PHP als Modul auch macht, nur dass kein direkter datenaustasuch zwischen Apache und PHP stattfinden kann. Der ist hier aber gar nicht norwendig, da das Filelocking im OS verankert ist.
Ist halt die Frage ob das ignore_user_abort() was bringt bei CGI-Modul oder nicht?
Auch das sollte was bringen, da es sich ja um die Verbindung des Clients mit der Runtime-Instanz des Scriptes handelt.
Mit meinen Code oben, wäre die Situation halt, das File wird zum schreiben geöffnet (und dabei inhaltlich gelöscht!) und bevor die Daten geschrieben werden, bricht das Skript ab! Und schon wieder ein Unsicherheitsfaktor! :-(
Ja. Für diesen Hinweis danke ich Dir auch. Man lernt immer 'was dazu, auch wenn man glaubt, schon gaaanz viel zu können. Aber alles ist halt relativ.
Wenn ich Sven jetzt ein bisschen kitzele, dann hat der bestimmt noch drei Seiten Background dazu, über die ich noch nicht nachgedacht habe.
Man ist halt von der Unwissenheit oder Böswilligkeit der Benutzer nie geschont!
Das hat nichts mit Böswilligkeit zu tun, sondern nur mit zeitlich ungünstigen Konstellationen (hoher Auslastung). Da tauchen dann plötzlich die ganzen serialisierungs-Versäumnisse auf.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen