Аналогично: Как прочитать только 5 последних строк текстового файла в PHP?
У меня большой лог-файл, и я хочу показать 100 строк с позиции X в файле.
Мне нужно использовать fseek
, а не 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"));
}
Я пытаюсь создать веб-просмотрщик журнала, который будет начинаться с конца файла и отображать 100 строк, а при нажатии кнопки «Далее» будут показаны следующие 100 строк, предшествующих ему.