PHP如何高效获取大文件(1G以上)行数
答案
一次读取一部分数据,计算这部分数据中有多少个换行符,不断循环,效率会比顺序读取内容高。
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;
}