我正在开发一个php中的日志文件查看器,它应该从文件中读取10行(比如说2 GB),当用户点击下一行时,必须读取后续的10行。 按下后退按钮时,必须打印最后10行。
到目前为止,我已经使用fgets实现了文件读取(由于文件大小),我试图弄清楚如何寻找下一个10行和前10行。
if($handle)
{
$cnt=1;
while(($buffer=fgets($handle))!==false and $cnt<=10) {
echo $buffer;
$cnt++;
}
if(feof($handle)) {
echo "error";
}
}
答案 0 :(得分:0)
PHP中的SplFileObject类可以执行您想要执行的操作。看到: http://php.net/manual/en/splfileobject.seek.php
示例代码:
<?php
// Set $lineNumber to the line that you want to start at
// Remember that the first line in the file is line 0
$lineNumber = 43;
// This sets how many lines you want to grab
$lineCount = 10;
// Open the file
$file = new SplFileObject("logfile.log");
// This seeks to the line that you want to start at
$file->seek($lineNumber);
for($currentLine=0; $currentLine < $lineCount; $currentLine++) {
echo $file->current();
$file->next();
}
?>