gzipで圧縮されたファイルを生成するPHPスクリプトを書いています。私が使用しているアプローチは、PHPで文字列を作成し、スクリプトの最後でファイルに書き出す前にその文字列をgzcompress()することです。
現在、より大きなファイルでスクリプトをテストしていて、メモリ割り当てエラーが発生しています。結果の文字列が大きくなりすぎて、一度にメモリに保持できないようです。
これを解決するために、PHPで大きな文字列が割り当てられないようにgzopen()とgzwrite()を使用しようとしました。ただし、gzwrite()で生成されたgzipファイルは、gzcompress()を使用した場合とは大きく異なります。さまざまなzipレベルで実験しましたが、役に立ちません。また、gzdeflate()を使用してみたところ、gzwrite()と同じ結果になりましたが、それでもgzcompress()とは似ていません。異なるのは最初の2バイト(zlibヘッダー)だけではなく、ファイル全体です。
gzcompress()は、PHPの他のgzip関数と何が違うのですか?結果を段階的に生成しながら、gzcompress()の結果をエミュレートする方法はありますか?