PHP의 압축 기능 gzencode, gzdeflate 및 gzcompress 비교

巴扎黑
풀어 주다: 2023-03-15 13:18:01
원래의
3699명이 탐색했습니다.

gzencode는 기본적으로 ZLIB_ENCODING_GZIP 인코딩을 사용하고 gzip 압축 형식을 사용합니다. 실제로 defalte 알고리즘을 사용하여 데이터를 압축한 다음 파일 헤더와 adler32 확인을 추가합니다.

gzdeflate는 기본적으로 ZLIB_ENCODING_RAW 인코딩을 사용하며 실제로 deflate 데이터 압축 알고리즘을 사용합니다. , 먼저 LZ77 압축을 사용한 다음 Huffman 코딩을 사용하여

gzcompress를 압축합니다. 기본 인코딩은 ZLIB_ENCODING_DEFLATE이고 실제로는 deflate를 사용하여 데이터를 압축한 다음 zlib 헤더와 CRC 체크가 추가되었습니다

이 세 가지 기능의 비교 본질 위는 deflate, zlib, gzip의 세 가지 압축 방법을 비교한 것입니다.

성능 측면에서: deflate가 gzip보다 우수하고 zlib보다 우수함

압축 후 텍스트 파일의 기본 압축률 측면에서: deflate가 zlib보다 우수하고 gzip보다 우수함

이 세 가지 알고리즘 중 gzip과 zlib의 작성자는 모두 Jean-Loup Gailly와 Mark Adler입니다.

이 두 가지 알고리즘과 그래픽 형식 png는 수축 알고리즘을 사용합니다.

디플레이트 알고리즘은 LZ77 알고리즘과 허프만 코딩을 모두 사용하는 무손실 데이터 압축 알고리즘입니다.

Phil Katz가 PKZIP 보관 도구의 두 번째 버전에 대해 원래 정의했으며 나중에 RFC 1951 사양에서 정의했습니다.

deflate 알고리즘의 압축 및 압축 해제 구현 과정은 압축 라이브러리 zlib에서 확인할 수 있습니다.

PHP의 압축 구현은 deflate, zlib 및 gzip 압축 방법을 제공하는 함수 라이브러리인 zlib를 사용합니다.

우리가 사용하는 위 세 가지 함수는 매개변수의 인코딩을 동일하게 변환하고 압축률을 동일하게 설정하면 최종적으로 동일한 함수를 호출하므로 효과와 성능이 동일합니다.

PHP의 zlib 구현은 ext/zlib 디렉토리에 확장으로 존재합니다. 압축 기능은 deflateInit2() + deflate() + deflateEnd()의 세 가지 함수를 통해 완성되고, 압축 해제 기능은 inflateInit2() + inflate() + inflateEnd()의 세 가지 함수를 통해 완성됩니다. 압축은 궁극적으로 php_zlib_encode 함수를 통해 호출됩니다. 입력 문자열, 압축 비율 및 결과 출력 외에도 다양한 항목 함수 호출 매개변수가 인코딩입니다. deflateInit2의 네 번째 매개변수는 인코딩을 지정합니다. PHP는 세 가지 상수를 정의합니다:

#define PHP_ZLIB_ENCODING_RAW                                                                                                                                      #define PHP_ZLIB_ENCODING_DEFLATE 0x0f // zlib 15

Three 함수 호출 과정에서 인코딩을 직접 지정하여 다른 알고리즘을 사용할 수 있습니다.

zlib : ZLIB_ENCODING_DEFLATE gzip: ZLIB_ENCODING_GZIPdeflate: ZLIB_ENCODING_RAW

이 세 가지 함수는 세 가지 알고리즘의 간단한 호출 방법이며 더 나은 이름으로 표시됩니다. 세 가지 함수는 동일한 인코딩을 지정하여 동일한 효과를 얻을 수 있으며, PHP도 범용 압축 함수로 zlib_encode 함수를 제공합니다.

위 내용은 PHP의 압축 기능 gzencode, gzdeflate 및 gzcompress 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿