Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Bestimmte Zeile löschen

  1. #1
    Registrierter Benutzer
    Registriert seit
    21.08.2004
    Beiträge
    14

    Bestimmte Zeile löschen

    Hallo, ich möchte mit PHP eine Log-Datei in HTML schreiben.

    Hierzu füge ich den HTML-Header und danach Meldungen ein. Damit die Datei nicht zu groß wird, soll sie auf ca. 1000 Einträge begrenzt werden.

    Sobald die 1000 erreicht ist, muss ein alter Eintrag (nach dem HTML-Header) gelöscht werden, damit ein neuer angefügt werden kann.

    Wie groß der Header ist weiß ich, ich kann also mit fseek() zu der Stelle der Datei wo sich der älteste Eintrag befindet springen. Jetzt weiß ich nur nicht wie ich diesen löschen kann.

    Sicher wäre es auch möglich, die geamte Datei per file() einzulesen, einen Eintrag zu löschen und die Datei dann wieder neu zu schreiben. Denke aber, das eine andere Lösung bei großen Dateien zu bevorzugen ist, oder?

    Würde mich mal interessieren was ihr darüber denkt, bzw. wie ich mit Funktionen wie fseek() zu einem Ergebnis kommen kann.

    thx,
    -sallo

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Meines Wissens nach gibts da (unter PHP) keine andere Lösung.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  3. #3
    Registrierter Benutzer Avatar von moidaschl
    Registriert seit
    05.11.2005
    Ort
    Wien
    Beiträge
    12
    du musst die datei einlesen und dann wegschneiden
    mn@nitschi ~ $ uname -a
    Linux nitschi 2.6.13-gentoo-r3 #6 SMP Sat Nov 5 18:58:43 CET 2005 i686 AMD Athlon(tm) 64 Processor 3000+ AuthenticAMD GNU/Linux

  4. #4
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von sallo
    Hierzu füge ich den HTML-Header und danach Meldungen ein. Damit die Datei nicht zu groß wird, soll sie auf ca. 1000 Einträge begrenzt werden.

    Sicher wäre es auch möglich, die geamte Datei per file() einzulesen, einen Eintrag zu löschen und die Datei dann wieder neu zu schreiben.
    Die letzte Methode ist bei max.1000 Einträgen kein Problem.
    Als ich noch kein C kannte, wühlte sich ein php-Script durch die Logfiles, die ausgepackt so um die 80 Mb hatten. php hat's gebracht so mit eingestellten Rechenzeiten von 2 Stunden, aber es war jedesmal ein Kampf mit dem Sysop, wann ich durfte. Bei 300-500 Mb ist php allerdings indiskutabel.

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  5. #5
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von sallo
    Hallo, ich möchte mit PHP eine Log-Datei in HTML schreiben.

    Hierzu füge ich den HTML-Header und danach Meldungen ein. Damit die Datei nicht zu groß wird, soll sie auf ca. 1000 Einträge begrenzt werden.

    Sobald die 1000 erreicht ist, muss ein alter Eintrag (nach dem HTML-Header) gelöscht werden, damit ein neuer angefügt werden kann.

    Wie groß der Header ist weiß ich, ich kann also mit fseek() zu der Stelle der Datei wo sich der älteste Eintrag befindet springen. Jetzt weiß ich nur nicht wie ich diesen löschen kann.

    Sicher wäre es auch möglich, die geamte Datei per file() einzulesen, einen Eintrag zu löschen und die Datei dann wieder neu zu schreiben. Denke aber, das eine andere Lösung bei großen Dateien zu bevorzugen ist, oder?

    Würde mich mal interessieren was ihr darüber denkt, bzw. wie ich mit Funktionen wie fseek() zu einem Ergebnis kommen kann.

    thx,
    -sallo
    Ich würde das anders machen.
    Die LogDatei auf 10 einzelne Dateien aufteilen, dann jede einzeln Datei formatieren.

    Vorteil: Die große LogDatei muß nur 1x vollständig gelesen werden,
    und dient gleichzeitig als Backup!
    Außerdem wird dein Programm schneller, da die Dateien zum formatieren
    schneller gelesen werden können.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •