Mailinglisten-Archive |
Hallo Liste, Ich beisse mir seit ein paar Tagen an folgendem Problem die Zähne aus: Aus einer Log-Datei sollen die letzten x Einträge ausgegeben werden, die eine bestimmte Zeichenfolge beinhalten. Meine Loesung: Da die Datei mehr als 6000 Zeilen hat, kann ich sie nicht einfach von vorne nach hinten durchlaufen, also habe ich mir gedacht sie von hinten Zeichenweise einzulesen. Das Skript funktioniert auch wunderbar, nur es bricht auf einem Pentium 100 nach ca.. 250 durchlaufenen Zeilen mit einem Timeout ab. Mein Frage : Gibt es einen schnelleren/eleganteren weg die Zeilen einzulesen ?? $smArray= array(); $treffer =0; $file = fopen("$filename","r"); $filepoint=filesize($filename)-2; while($treffer < 10){ $count=0; // Liest die Datei rueckwaerts Zeichenweise in ein Array bis \n do{ fseek($file,$filepoint); $smArray[$count]=fgetc($file); $filepoint--; $count++; }while($smArray[$count-1] != "\n"); // Wandelt das Array in einen String $line =""; while ($count >= 0) { $count --; $line=$line.$smArray[$count]; } // Sucht im String noch TextToFind und gibt ggf. die Zeile aus if(ereg("TextToFind" ,$line)) { $treffer++; echo "<br>".$line."<br>\n"; }; };
php::bar PHP Wiki - Listenarchive