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

Dieses Thema PHP: Wie an den Anfang einer Datei schreiben, ohne zu überschreiben? im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von starlitmind, 24. Apr. 2003.

Thema: PHP: Wie an den Anfang einer Datei schreiben, ohne zu überschreiben? Moin! Frei nach dem Motto Newbie sein ist keine Schande... ;) Mit fopen(datei.txt,a) lässt sich prima eine Datei...

  1. 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:
    http://www.php.net/manual/en/function.rewind.php

    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
     
Die Seite wird geladen...

PHP: Wie an den Anfang einer Datei schreiben, ohne zu überschreiben? - Ähnliche Themen

Forum Datum
PnyplexLP: Ein kleiner Anfänger auf Youtube Windows 7 Forum 29. Jan. 2012
Differenz aus der End- und Anfangszeit, die in einer Zelle stehen Microsoft Office Suite 13. Jan. 2007
Aufzählungszeichen im Text (nicht am Anfang einer Zeile) Word 2003 Microsoft Office Suite 17. Sep. 2005
Windows Server 2012 Essentials R2: bitte nicht schlagen - Anfängerfrage. . . Windows Server-Systeme 15. Jan. 2014
Brauche Hilfe bei Aero Peek ( GRau Hinterlegt laptop 1-2 Tage Alt an anfang ging es ) Hardware 22. Dez. 2010