phpbar.de logo

Mailinglisten-Archive

[php] Datei ruckwaerts auslesen

[php] Datei ruckwaerts auslesen

Michael Voehringer MichaelVoehringer_(at)_gmx.de
Fri, 05 Nov 1999 17:53:54 +0100


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