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」を実行しました...何もありません。