PHP如何高效获取大文件(1G以上)行数

267 4月之前 PHP 大文件

答案

一次读取一部分数据,计算这部分数据中有多少个换行符,不断循环,效率会比顺序读取内容高。

function countLine($file)
{
    $fp = fopen($file, 'r');
    $i  = 0;

    while (!feof($fp)) {
        //每次读取2M
        if ($data = fread($fp, 1024 * 1024 * 2)) {
            //计算读取到的行数
            $num = substr_count($data, "\n");
            $i += $num;
        }
    }

    fclose($fp);
    return $i;
}