Tom: *.TXT-Datei erzeugen

Beitrag lesen

Hello,

Ich meinte eigentlich, eine GANZ neue Datei erzeugen!

Nehmen wir mal an, die Datei ist schon da.

$data_file = fopen("deineDatei/datei.txt","w+");//Datei öffnen

Dann ist sie nun weg. das wird den anderen Benutzer "freuen"

flock($data,LOCK_SH);//Gegen gleichzeitiges Schreiben

Zwischen dem fopen() und dem flock() kann "unendlich viel Zeit" vergangen sein und jemand eine Million Byte eingestellt haben...
Außerdem schütze flock() nicht davor, dass eine andere Applikation schreibt, die die Lockingstrategie nicht beachtet.

$newdata="Hallo Welt"; //Dein neuer String

#Daten schreiben
 fwrite ($data_file,$newdata);

unset ($newdata); // Die Var $newdata löschen (optional)

wenn sie besonders große war, gar nicth falsch

flock($data,LOCK_UN); // Den Schutz aufheben

Das kann man sich schenken, da durch das fclose() auch das Locking aufgehoben wird.

fclose($data); // Datei schließen

Wenn man jetzt sicher gehen will, dass man wirklich eine neue Datei erzeugt, dann müsste man mit mandatory Locking das Verzeichnis sperren, prüfen, ob die datei da ist, wenn nicht die Datei mit mandatory-Locking anlegen, das Verzeichnis sofort freigeben, in die datei schreiben und sie dann schließen oder freigeben.

Aber PHP unterstützt mandatory Locking von Haus aus nicht. Das bemängele ich. Allerdings setzt mandatory Locking auch sauberste Programmierung voraus. sonst steht der Server.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen