Simile a: How to read only 5 last line of the text file in PHP?PHP: Leggere da certo punto nel file di
Ho un grande file di log e voglio essere in grado di mostrare a 100 linee da posizione X nel file. È necessario utilizzare fseek
anziché file()
perché il file di registro è troppo grande.
Ho una funzione simile ma leggerà solo dalla fine del file. Come può essere modificato in modo da poter specificare anche una posizione iniziale? Avrei anche bisogno di iniziare alla fine del file.
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"));
}
Quello che sto cercando di fare è creare un visualizzatore di log basato sul web che partirà dalla fine del file e visualizzare 100 linee, e quando si preme il pulsante "Avanti", i prossimi 100 linee che lo precede sarà mostrato.
Qui ci sono ancora altri modi per fare questo al fine di efficienza: http://unix.stackexchange.com/questions/94318/awk-or-sed-efficiency#94320 – dukevin