Ankündigung

Einklappen
Keine Ankündigung bisher.

Log Datei einlesen aber grosse Datei

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • webdino
    hat ein Thema erstellt Log Datei einlesen aber grosse Datei.

    Log Datei einlesen aber grosse Datei

    ich möchte eine Logdatei die teilweise mehrere MB gross ist in eine mysql Datenbank importieren.
    Nur die Grösse ist natürlich nicht unbedingt sehr planbar aber ich weiss es vorher eben nicht.
    Kann ich das in einen Stream einlesen? (habe ich aber noch nicht gemacht wie?)
    oder gibt es andere Möglichkeiten das mit PHP und nicht unbedingt auf Konsole zu machen.

    Danke für Tips oder Lösungsvorschläge

  • smilla
    antwortet
    Ich würds auch per Scream machen.

    Vor einigen Jahren hatte ich mal mit 600MB XML Datein zu tun, die ich verarbeiten musst. Okay es war eine C++ Anwendung die ich baute. Anfangs lass ich die ganze Datei auf ein mal ein und die Anwendung war mega lam. Dann las ich es als Stream ein und es war ca. 100x schneller.

    Notfalls einfach etwas rumprobieren wenn du verschiedene Ideen hast.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Nein, sowas gibt es nicht. Um "vorne" etwas abzuschneiden, muss die Datei komplett neu geschrieben werden.

    Einen Kommentar schreiben:


  • eisenhans
    antwortet
    Log Datei

    Zitat von lstegelitz Beitrag anzeigen
    In einen Stream einlesen? Naja... nein.
    Du "streamst" die Daten durch deine Anwendung (ein gebräuchlicher Weg um resourcenschonend mit großen bzw. unbekannten Datenmengen umzugehen). Es bedeutet, das du deine Daten nicht komplett in einen großen Puffer einliest, sondern nur Stückchen für Stückchen liest und verarbeitest, in deinem Fall böte sich zeilenweise an.
    Hast du bereits eigene Ansätze?
    Gibt es auch die Möglichkeit, ressourcenschonend vorne etwas wieder abzuschneiden?

    Ich habe bei meiner Logdatei eine Maximalgröße wegen der Anzeige in einer textarea. Wie kann ich die ersten Zeilen am besten löschen, wenn die Datei zu groß ist ?

    Munter !

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    regulärer Ausdruck falsch ausgegeben - dadurch kein Ergebnis bei preg_match_all

    Mit den einfachen Dateifunktionen sollte das ganze dann tatsächlich kein Problem sein.

    Mit fssek() kannst du dann evt, noch eine bestimmte Position springen

    Einen Kommentar schreiben:


  • draco88
    antwortet
    Zitat von webdino Beitrag anzeigen
    nein ich bin noch am überlegen was am Besten wäre, stream soll ja schneller sein und eben ressourcen schonender
    dann benutzt doch einfach nen dateistream.
    Eine kleine Funktionsauswahl:
    [man]fopen[/man] [man]fgets[/man] [man]feof[/man] [man]fclose[/man]

    Einen Kommentar schreiben:


  • webdino
    antwortet
    Zitat von lstegelitz Beitrag anzeigen
    In einen Stream einlesen? Naja... nein.
    Du "streamst" die Daten durch deine Anwendung (ein gebräuchlicher Weg um resourcenschonend mit großen bzw. unbekannten Datenmengen umzugehen). Es bedeutet, das du deine Daten nicht komplett in einen großen Puffer einliest, sondern nur Stückchen für Stückchen liest und verarbeitest, in deinem Fall böte sich zeilenweise an.
    Mit set_time_limit() kannst du den Timeout für die Scriptlaufzeit anpassen (bzw. komplett ausschalten), so daß dein Import eine ganze Weile laufen kann.

    Hast du bereits eigene Ansätze?
    nein ich bin noch am überlegen was am Besten wäre, stream soll ja schneller sein und eben ressourcen schonender

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    Zitat von Wolla Beitrag anzeigen
    Zähler incrementieren und diesen bei vollen tausendern ausgeben lasssen, damit unterbrichst du das timeout.
    Du könntest beispielsweise, dann einen header-redirerect machen und an der Stelle weitermachen machen...

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Zähler incrementieren und diesen bei vollen tausendern ausgeben lasssen, damit unterbrichst du das timeout.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    In einen Stream einlesen? Naja... nein.
    Du "streamst" die Daten durch deine Anwendung (ein gebräuchlicher Weg um resourcenschonend mit großen bzw. unbekannten Datenmengen umzugehen). Es bedeutet, das du deine Daten nicht komplett in einen großen Puffer einliest, sondern nur Stückchen für Stückchen liest und verarbeitest, in deinem Fall böte sich zeilenweise an.
    Mit set_time_limit() kannst du den Timeout für die Scriptlaufzeit anpassen (bzw. komplett ausschalten), so daß dein Import eine ganze Weile laufen kann.

    Hast du bereits eigene Ansätze?

    Einen Kommentar schreiben:

Lädt...
X