podobne do: How to read only 5 last line of the text file in PHP?PHP: Czytaj z pewnego punktu w pliku
Mam duży plik dziennika i chcę być w stanie wykazać, 100 linii z pozycji X w pliku. Potrzebuję użyć fseek
zamiast file()
, ponieważ plik dziennika jest zbyt duży.
Mam podobną funkcję, ale będzie czytać tylko od końca pliku. W jaki sposób można go zmodyfikować, aby można było określić pozycję początkową? Musiałbym również zacząć na końcu pliku.
function read_line($filename, $lines, $revers = false)
{
$offset = -1;
$i = 0;
$fp = @fopen($filename, "r");
while($lines && fseek($fp, $offset, SEEK_END) >= 0) {
$c = fgetc($fp);
if($c == "\n" || $c == "\r"){
$lines--;
if($revers){
$read[$i] = strrev($read[$i]);
$i++;
}
}
if($revers) $read[$i] .= $c;
else $read .= $c;
$offset--;
}
fclose ($fp);
if($revers){
if($read[$i] == "\n" || $read[$i] == "\r")
array_pop($read);
else $read[$i] = strrev($read[$i]);
return implode('',$read);
}
return strrev(rtrim($read,"\n\r"));
}
Co staram się zrobić, to stworzyć przeglądarkę internetową opartą dziennika, który rozpocznie się od końca pliku i wyświetlać 100 linii, a po naciśnięciu przycisku „Dalej”, kolejne 100 linii poprzedzającego go będzie pokazane.
Oto jeszcze więcej sposobów, aby to zrobić w kolejności wydajność: http://unix.stackexchange.com/questions/94318/awk-or-sed-efficiency#94320 – dukevin