Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von April

SELFHTML Forumsarchiv
Letzte Zeile einer Datei löschen

Informationsseite
  1. Seite (PHP) Letzte Zeile einer Datei löschen von FeGm, 30. 04. 2006, 19:31
nach unten

Letzte Zeile einer Datei löschen

Die folgende Nachricht zum Thema stammt von: FeGm, 30. 04. 2006, 19:31

Hallo!

ich möchte ein PHP Skript bauen, das wenn ic hes aufrufe die letzte Zeile einer Datei löscht.

Wie geht sowas?

mfg, FeGm

nach obennach unten

Letzte Zeile einer Datei löschen

Die folgende Nachricht zum Thema stammt von: Julian von Mendel, 30. 04. 2006, 19:37

Hi,

»» ich möchte ein PHP Skript bauen, das wenn ic hes aufrufe die letzte Zeile einer Datei löscht.

Datei öffnen (fopen), Datei einlesen (while, feof, fgets) und dabei jede Zeile als Element in ein Array einfügen, Datei locken (flock), letzten Eintrag aus dem Array entfernen (array_slice), Array wieder zusammensetzen (implode), Daten zurückschreiben (fwrite), Datei schließen (fclose).

Schöne Grüße
Julian
--
http://lighttraffic.de | http://derjulian.net

nach obennach unten

Letzte Zeile einer Datei löschen

Die folgende Nachricht zum Thema stammt von: dedlfix, 30. 04. 2006, 21:28

echo $begrüßung;

»» ich möchte ein PHP Skript bauen, das wenn ic hes aufrufe die letzte Zeile einer Datei löscht.

Wenn die Datei nicht zu groß ist:
Einlesen in einen String mittels file_get_contents(), ermittle die Position des letzten Zeilenumbruchs mit strrpos(), und schneide dann mit ftruncate() (plus fopen() und fclose()) ab.

Oder: Einlesen mittels file(), letztes Array-Element löschen, implode()ieren und schreiben.

Wenn die Datei sehr groß ist und du sie nicht in Gänze dem Arbeitsspeicher zumuten möchtest:
Lese-Datei(1) öffnen mit fopen(), zweite Datei(2) zum Schreiben öffnen, solange das Ende von 1 noch nicht erreicht ist: wenn eine gemerkte Zeile vorhanden ist, diese nach 2 schreiben, Zeile aus 1 mittels fgets() lesen und merken. 1 und 2 schließen, 1 löschen und 2 umbenennen.

Gegebenenfalls müssen Zweitzugriffe während des Änderungsprozesses verhindert werden. flock() hilft dabei.


echo "$verabschiedung $name";

nach obennach unten

Letzte Zeile einer Datei löschen

Die folgende Nachricht zum Thema stammt von: eddi, 01. 05. 2006, 00:31

Hallo,


»» Wenn die Datei nicht zu groß ist:

davon sollte im Zweifel immer ausgegangen werden. Das Einlesen eines gesamten Files in den Arbeitsspeicher (wie es die vorgeschlagenen Funktion file_get_contents() und file() tun würden) ist absolut nicht notwendig:

$f='filename';
$c=0;
$l=0;
$s=filesize($f);
$dat=fopen($f,'r+');
while(ftell($dat)!=$s){
        $c+=$l;
        $l=0;
        do{$l+=strlen($t=fgets($dat,128));}while(substr($t,-1)!="\n");
}
fseek($dat,$c,SEEK_SET);
ftruncate($dat,$c);
fclose($dat);


»» Gegebenenfalls müssen Zweitzugriffe während des Änderungsprozesses verhindert werden. flock() hilft dabei.

Auf der Funktionsseite bitte dringlichst die Warnung beachten!


Gruß aus Berlin!
eddi

--
PHP: PHP unter Linux installieren, in Bearbeitung PHP Konfigurieren

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von April

© 1998-2006 Seite Impressum, Software: Classic Forum