ホームページ >バックエンド開発 >PHPチュートリアル >PHP圧縮関数の実装: gzencode、gzdeflate、gzcompressの違い
•gzencode は、デフォルトで ZLIB_ENCODING_GZIP エンコーディングを使用し、gzip 圧縮形式を使用します。実際には、defalte アルゴリズムを使用してデータを圧縮し、ファイル ヘッダーと adler32 検証を追加します。
•gzdeflate は、デフォルトで ZLIB_ENCODING_RAW エンコーディングを使用し、deflate データ圧縮アルゴリズムを使用します。実際には、最初に LZ77 圧縮を使用し、次にハフマン コーディングを使用して圧縮します。デフォルトのエンコーディングは ZLIB_ENCODING_DEFLATE で、実際には deflate がデータの圧縮に使用されます。 zlib ヘッダーと CRC チェックが追加されました
パフォーマンスの観点から: deflate は gzip よりも優れており、zlib よりも優れています
圧縮後のテキスト ファイルのデフォルトの圧縮率の観点から: deflate は zlib よりも優れており、gzip よりも優れています
これら 2 つのアルゴリズムとグラフィック形式 PNG は deflate アルゴリズムを使用します。
deflate アルゴリズムは、LZ77 アルゴリズムとハフマン コーディングの両方を使用する可逆データ圧縮アルゴリズムです。
これはもともと Phil Katz によって彼の PKZIP アーカイブ ツールの 2 番目のバージョン用に定義され、後に RFC 1951 仕様で定義されました。
PHP の圧縮実装は、deflate、zlib、gzip 圧縮メソッドを提供する関数ライブラリである zlib に依存しています。
上記の 3 つの関数は、パラメーターのエンコーディングが同じに変更され、圧縮率が同じに設定されている場合、最終的に同じ関数が呼び出され、効果とパフォーマンスは同じになります。
コードをコピーします。 コードは次のとおりです。 #define PHP_ZLIB_ENCODING_RAW —0xf //deflate -15
#define PHP_ZLIB_EN CODING_GZIP 0x1f // gzip 15 + 16#define PHP_ZLIB_ENCODING_DEFLATE 0x0f // zlib 15
3 つの関数は、呼び出しプロセス中に他のアルゴリズムを使用するエンコーディングを直接指定できます:
コードをコピーします
コードは次のとおりです: zlib: ZLIB_ENCODING_DEFLATE
gzip : ZLIB_ENCODING_GZIPdeflate: ZLIB_ENCODING_RAW
これら 3 つの関数は、3 つのアルゴリズムの単純な呼び出しメソッドであり、より適切な名前が付けられています。 3 つの関数は同じエンコーディングを指定することで同じ効果を得ることができ、PHP では汎用圧縮関数として zlib_encode 関数も提供しています。
http://shouce.jb51.net/gzip/rfc-deflate.html
http://www.gzip.org/zlib/rfc-deflate.html
上記は、PHP 圧縮関数の実装、つまり gzencode、gzdeflate、gzcompress の違いを、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。