2

PHP 内で (gzopen/gzgets を使用して) 読み取ろうとしている gzip されたテキスト ファイルがあります。ファイルはやや大きく、約 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)) を終了します]

ファイルを gunzip してその行に移動すると、次のように表示されます。

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 に答える