•gzcompress는 기본적으로 ZLIB_ENCODING_DEFLATE 인코딩이 사용되며 실제로 데이터 압축에는 deflate가 사용됩니다. , zlib 헤더 및 CRC 검사가 추가됩니다
이 세 가지 기능의 비교는 본질적으로 deflate, zlib 및 gzip의 세 가지 압축 방법을 비교하는 것입니다.
압축 후 텍스트 파일의 기본 압축률 측면에서 보면 deflate가 zlib보다 우수하고 gzip보다 우수함
중 이 세 가지 알고리즘 gzip과 zlib의 작성자는 Jean-Loup Gailly와 Mark Adler입니다.
deflate 알고리즘은 LZ77 알고리즘과 Huffman Coding을 모두 사용하는 무손실 데이터 압축 알고리즘입니다.
원래 Phil Katz가 PKZIP 보관 도구 버전 2와 이후 RFC 1951 사양에 대해 정의한 것입니다.
deflate 알고리즘의 압축 및 압축 해제 구현 과정은 압축 라이브러리 zlib에서 확인할 수 있습니다.
우리가 사용하는 위 세 가지 함수는 매개변수의 인코딩을 동일하게 변경하고 압축률을 동일하게 설정하면 최종적으로 동일한 함수가 호출되어 효과와 성능이 동일합니다.
PHP의 zlib 구현은 ext/zlib 디렉토리에 확장으로 존재합니다. deflateInit2() deflate() deflateEnd()의 세 가지 함수가 협력하여 압축 기능을 완성하고, inflateInit2() inflate() inflateEnd()의 세 가지 함수가 협력하여 압축 해제 기능을 완성합니다. 압축은 궁극적으로 php_zlib_encode 함수를 통해 호출됩니다. 입력 문자열, 압축 비율 및 결과 출력 외에도 다양한 항목 함수 호출 매개변수가 인코딩입니다. deflateInit2의 네 번째 매개변수는 인코딩을 지정합니다. PHP는 세 가지 상수를 정의합니다:
코드 복사 코드는 다음과 같습니다:
#define PHP_ZLIB_ENCODING_RAW > >
세 가지 기능은 호출 프로세스에서 다른 알고리즘을 사용하도록 인코딩을 직접 지정할 수 있습니다.
코드 복사
코드는 다음과 같습니다.
zlib: ZLIB_ENCODING_DEFLATE gzip: ZLIB_ENCODING_GZIPdeflate: ZLIB_ENCODING_RAW
이 세 가지 함수는 세 가지 알고리즘의 간단한 호출 방법으로, 더 나은 이름으로 표시됩니다. 세 가지 함수는 동일한 인코딩을 지정하여 동일한 효과를 얻을 수 있으며, PHP도 범용 압축 함수로 zlib_encode 함수를 제공합니다.
참고 자료:
위 내용은 PHP의 압축 기능 구현, 즉 gzencode, gzdeflate, gzcompress의 차이점을 관련 내용을 포함하여 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.