2

我有一个压缩文本文件,我试图在 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'运行它来寻找特殊字符......什么都没有。

4

1 回答 1

1

将 zlib 更新到 1.2.7。我们运行的是 1.2.3,显然在 1.2.4 中添加了“大文件”支持。

于 2012-06-28T14:50:43.680 回答