類似: PHP でテキスト ファイルの最後の 5 行のみを読み取る方法は?
大きなログ ファイルがあり、ファイル内の位置 X から 100 行を表示できるようにしたいと考えています。ログファイルが大きすぎるため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 行を表示する Web ベースのログ ビューアーを作成することです。[次へ] ボタンを押すと、その前の次の 100 行が表示されます。