gzgets提前到达文件末尾

时间:2012-06-27 21:34:12

标签: php zlib

我有一个gzip压缩文本文件,我试图在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'来寻找特殊角色......没有。

1 个答案:

答案 0 :(得分:1)

将zlib更新为1.2.7。我们运行的是1.2.3,&#34;大文件&#34;显然在1.2.4中添加了支持。