PHP: Wie an den Anfang einer Datei schreiben, ohne zu überschreiben?

  • #1
S

starlitmind

Bekanntes Mitglied
Themenersteller
Dabei seit
10.10.2001
Beiträge
62
Reaktionspunkte
0
Moin!

Frei nach dem Motto Newbie sein ist keine Schande... ;)

Mit
Code:
fopen(datei.txt,a)
lässt sich prima eine Datei öffnen, um dann etwas ans Ende der Datei zu schreiben. Da ich aber immer etwas an den Anfang der Datei schreiben will, ohne dabei den Inhalt der Datei zu überschreiben, habe ich mir ein Workaround gebastelt: Die Datei wird erst geöffnet und der komplette Inhalt in eine Variable $inhalt-alt geschrieben, dannach wird neu und alt verknüpft ( $inhalt-neu = $inhalt-neu . $inhalt-alt; ) und damit überschreibe ich dann komplett die vorhandene Datei.

Frage: Der Workaround funktioniert, aber geht das eleganter und besteht mit der jetzigen Lösung die Gefahr, dass bei wachsendem Inhalt der Datei der ganze Vorgang zu viel Perfomance verbraucht?

Gruß,
Std.
 
  • #2
Hi

Ja eigentlich musst du die Datei nur im Modus r+ öffnen statt a.
Wenn du nach dem lesen wieder den Zeiger an den Anfang setzen willst, dann gibt es diese Funktion dafür:


PS: Nicht ausprobiert, aber denke dann geht es

Gruß, Michael
 
  • #3
Hi,

ich bin mir fast 100%ig sicher, das auch ausprobiert zu haben, und dass der Effekt war, dass die Daten in der Datei entsprechend der Länge des hineinzuschreibenden Strings überschrieben werden. Werd's aber trotzdem nochmal probieren...

Gruß
Std.
 
  • #4
So,

ich hab' jetzt so probiert:

Code:
$datenbank = datei.txt;
$datei = fopen($datenbank,r+);
rewind ($datei);
fwrite($datei, $eintrag_neu);
fclose ($datei);
Der Effekt ist der vermutete: Die vorhanden Daten in der Datei werden mit dem neuen String in dessen Länge überschrieben.

Mache ich was falsch?

Gruß
Std.
 
  • #5
Hi

Dann ist deine ursprüngliche Vorgehensweise auch die einzige dir mir noch einfallen würde.

Gruß, Michael
 
  • #6
OK,

dann bin ich also wahrscheinlich doch nicht nur zu blöd...

Zur anderen Frage: Wird die ursprüngliche Vorgehensweise irgendwann kritisch, wenn die Datei, deren Inhalt ja jedesmal komplett gelesen und die danach jedesmal neu geschrieben wird, eine gewisse Größe erreicht? Ist mit Perfomanceproblemen zu rechnen, oder sollte ich vielleicht jedesmal vor dem Überschreiben ein Backup von der Datei machen lassen, für den Fall, dass beim Schreiben mal was schief geht?

Gruß,
Std.
 
  • #7
Hi

Warum auf wieviel MB wolltest du die Textfile denn aufblähen?
Also ich denke so ab 0.5 MB Größe könnte es bei vielen gleichzeitigen Zugriffen ein Engpass werden.
Speicher die Sachen doch in einer Datenbank, die ist besser dafür geeignet.

Gruß, Michael
 
  • #8
Hi,

0,5 MB - alles klar. Ich belasse es vorerst bei der Textdatei; worum es geht, ist ein Minimal-Gästebuch, ohne großen Schnickschnack, mit allen Beiträgen auf einer einzigen Seite -- ich erwarte dort vorerst nicht allzu viele Postings. So kann ich die Einträge bei Bedarf auch einfach mit->nem Editor bearbeiten.
Außerdem beschäftige ich mich erst seit ca. 1 Woche (!) mit PHP, habe auch sonst noch nix mit Scriptsprachen (auch nicht JavaScript) am Hut gehabt, und meine derzeitigen Aktivitäten gehören noch mehr in den Bereich autodidaktische Übungen. Wenn ich mich in PHP selbst sicher fühle, kommt aber mit Sicherheit was mit PHP und MySQL an die Reihe...

(Thema von meiner Seite aus erstmal erledigt.)

Gruß,
Std.
 
  • #9
Hi

Also ein Gästebuch kannst du bis in alle Ewigkeit als Textfile laufen lassen ;D

Das lesen macht ihm nichts, denn die Datei sitzt im Cache und reinschreiben kommt ja auch nicht mehrmals in der Sekunde vor.

Gruß, Michael
 
Thema:

PHP: Wie an den Anfang einer Datei schreiben, ohne zu überschreiben?

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben