Resourcenschonendes Lesen eines großen Textfiles

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

  • Resourcenschonendes Lesen eines großen Textfiles

    Hallo allerseits,
    ich würde gerne einen sehr großen Textfile (200 MB oder sogar mehr) auf meinem Webserver auf Zeilen mit bestimmten Inhalt überprüfen.
    Simpel gesehen so:

    PHP-Code:
    $file "bla.txt";
    $str "test";

    $lines file($file);

    foreach (
    $lines as $line) {
      if (
    strpos(strtolower($line), strtolower($str)) !== false) {
       echo 
    "Treffer: "+$line;
       break;
      }

    Ob diese Methode bei einem so großen File geeignet ist, bezweifel ich aber. Wie kann man diese Suche resourcenschonend gestalten, auch wenn sie langsamer von Statten geht? Der Server sollte nämlich auf keinen Fall ausfallen.

    Grüße
    kallC

  • #2
    Muss es unbedingt der Webserver sein? Ansonsten kannst du dir ja Xampp holen und dann auf deinem Localhost das ganze erledigen.

    Kommentar


    • #3
      Benutz ne Datenbank. mySQL z.B.
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Es geht um die autom. generierten Weblogs und ich möchte sie nicht herunterladen.

        Habe das ganze auch mal so probiert:
        PHP-Code:
        $fd fopen($file"r");
        while (!
        feof ($fd)) {
          
        $line fgets($fd4096);
          if (
        strpos(strtolower($line), $str) !== false) {
            echo 
        $line."\r\n";
            
        flush();
            
        ob_flush();
          }
        }
        fclose ($fd); 
        Um die Methoden zu vergleichen, habe ich die Systemwerte vom Apache überwacht (XAMPP, WinXP) und die Ausführzeit ausgeben lassen:

        Von der file-function:
        CPU-Auslastung: um die 40, mit stärkeren Schwankungen
        Speicherauslastung: ~380.000K
        Zeit: 94.24s

        feof-function:
        CPU-Auslastung: 38-44
        Speicherauslastung: ~4.270K
        Zeit: 76.23s

        ...spricht eindeutig für feof
        Wird sowas einen Server sehr belasten (Unix mehr oder weniger)?

        Kommentar


        • #5
          Ich verstehe immer noch nicht, warum du den File nicht einmal runterladen willst um es dann auf deinem Localhost zu machen. Du willst das ganze doch nur einmalig machen, oder? Oder willst du das ganze autom. in eine Datenbank überführen?

          Kommentar


          • #6
            Weil ich in einem Monat wieder in der Pampa mit ISDN sitze und nicht jede Woche oder sogar täglich 200MB ziehen kann
            Es ist leider nichts Einmaliges. Der Tageslog ist so groß.
            Zuletzt geändert von kallculator; 27.03.2005, 01:32.

            Kommentar


            • #7
              Original geschrieben von kallculator
              Weil ich in einem Monat wieder in der Pampa mit ISDN sitze [...]
              OffTopic:
              Ach du sch......! Mein BEILEID! :/
              Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
              var_dump(), print_r(), debug_backtrace und echo.
              Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
              Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
              Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

              Kommentar


              • #8
                Was wilst du denn suchen?

                Wenn es nur um Auswertung geht hilft dir vielleicht Webalizer weiter.

                Gruß

                Kommentar

                Lädt...
                X