我有一个压缩文本文件,我试图在 PHP 中读取(使用 gzopen/gzgets)。该文件有点大,大约 158,000 行。该脚本工作正常,除非当它到达文件的第 157,237 行时,它会读取该行的一部分,然后就像到达 EOF 一样。我能够解压缩文件并确认文件的其余部分确实存在。我写了一个简单的脚本来测试:
<?php
$handle = gzopen('/path/to/file.gz','r');
while(true) {
echo gzgets($handle,4096);
}
?>
它完美地读取了所有内容,然后突然到达这一行并打印:
GUAN XIN 508|R34745|CH|CGO|100|
没有别的了。它只是坐在那里[非无限循环版本退出 while(!gzeof($handle))]
如果我将文件压缩并转到该行,我会看到:
GUAN XIN 508|R34745|CH|CGO|100| | | | |BEGS| | | | |133|19| | | | | | | | | | | | |413669000|1|
所以数据就在那里。我不知道的 zlib 函数是否存在某种大小限制?
更新:我通过'cat -vet'运行它来寻找特殊字符......什么都没有。