我正在尝试逐行读取大型.gz文件。 这是我到目前为止所得到的:
$sfp = gzopen($filename, "rb");
while (!gzeof($sfp))
{
$line = gzread($sfp, 4096);
}
这就是问题所在,gzread读取变量中指定的长度(在本例中为4096),而忽略了新行。
我检查了“ fget”功能,它正常工作,因此它的读取行通过按新行或第一个出现的大小来限制大小。 我该如何使用gzread或其他解决方法做同样的事情?
答案 0 :(得分:0)
使用fgets()
就像读取普通文件一样。
如果要读取行,则不应使用b
模式,因为逐行表示它是文本文件。
$sfp = gzopen($filename, "r");
while ($line = fgets($sfp)) {
echo $line;
}