similares a: How to read only 5 last line of the text file in PHP?PHP: Leer de cierto punto en el archivo
Tengo un archivo de registro grande y quiero ser capaz de mostrar 100 líneas de posición X en el archivo. Necesito usar fseek
en lugar de file()
porque el archivo de registro es demasiado grande.
Tengo una función similar pero solo leerá desde el final del archivo. ¿Cómo se puede modificar para que también se pueda especificar una posición de inicio? También necesitaría comenzar al final del archivo.
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"));
}
Lo que estoy tratando de hacer es crear un visor de registro basado en web que comenzará desde el final del archivo y mostrar 100 líneas, y al pulsar el botón "Siguiente", los próximos 100 líneas que le precede se mostrará.
Éstos son aún más maneras de hacer esto con el fin de la eficiencia: http://unix.stackexchange.com/questions/94318/awk-or-sed-efficiency#94320 – dukevin