fünf zeilen in datei überschreiben
nubbi
- php
Hallöle,
also wie gesgat ich möchte immer die ersten fünf zeilen in einer Datei mit bestimmten Inhalten stopfen (überschreiben), wie muss ich das machen?
$file=fopen('datei.php');
flock($file,1);
fwrite($file,"Zeile1 \n Zeile2 \n Zeile3 \n Zeile4 \n Zeile5");
flock($file,3);
Geht das?
Bessere Lösungen?
Und was ist mit LOCK_NB (nummer 4);
wo könnte/müsste/sollte ich das benutzen?
mfg
Hellihello nubbi,
immerhin gibt es in PHP5 die Funktion file_get_contents und file_put_contents.
Mit explode () und "\n" bzw. "\n\r" kannst du aus der Datei dann vielleicht ein Array machen, mit jeder Zeile als einem Eintrag.
Gruß,
frankx
Hi,
ähm ich verstehe nicht ganz?
Für was brache ich file_get_contents?
Und wäre das dann etwa die bessere Lösung?
mfg
Hello,
Für was brache ich file_get_contents?
...um die gesamte Datei in den Arbeitsspeicher zu laden, um sie dann mittendrin manipulieren zu können.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
schön, dass Du an das Sperren denkst.
Es muss aber der geamte Änderungsvorgang gekapselt werden.
$file=fopen('datei.php');
flock($file,LOCK_EX);
Bei Textdateien ist es schwierig, am Anfang oder in der Mitte der Datei genau eine "Zeile" auszutauschen, da die Länge der Daten genau eingehalten werden muss.
Dazu muss man dann i.d.R. die geamte Textdatei umkopieren, was natürlich unwirtschaftlich ist.
Entweder, man organisiert seine Dateien gleich als "Random Access", also Dateien mit mindestens gleicher Satzlänge, oder man benötigt ein spezielles Zugriffssystem (BTREE oder ähnlich) für den effektiven Zugriff.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hellihello Tom,
Entweder, man organisiert seine Dateien gleich als "Random Access", also Dateien mit mindestens gleicher Satzlänge, oder man benötigt ein spezielles Zugriffssystem (BTREE oder ähnlich) für den effektiven Zugriff.
Und wie steht das im Zusammenhang mit PHPs serialize()? Ergänzung, Alternative, anderer Ansatz?
Dank und Gruß,
frankx
Hello,
Und wie steht das im Zusammenhang mit PHPs serialize()? Ergänzung, Alternative, anderer Ansatz?
Das erfordert leider auch ein komplettes Einlesen der Datei, ist aber bei vielen Einzelwerten, die zusammen nicht mehr als max. 1MB ergeben, bei üblichen Systemen eine praktikable Lösung. Dazu hatten wir schon mal einen etwas intensivren Thread :-)
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
[...]
die schnellere Lösung ist "Random Access".
Hierzu gibt es ein Beispiel unter http://selfhtml.bitworks.de -> Adressverwaltung
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom