在php中读取大文件并逐行导航

时间:2017-05-29 15:20:14

标签: php

我正在开发一个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";
    }

}

1 个答案:

答案 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();
}
?>