itsource

PHP에서 사용할 압축 방법을 선택하십시오.

mycopycode 2023. 1. 19. 07:09
반응형

PHP에서 사용할 압축 방법을 선택하십시오.

클라이언트 측에서 명령줄 PHP 스크립트를 사용하는 경우와 Apache 뒤에 있는 경우 등 2개의 PHP 스크립트를 사용하여 이동해야 하는 데이터가 많습니다.데이터를 서버 측에 투고하고 php://입력 스트림을 사용하여 웹 서버 측에 저장합니다.메모리 제한에 도달하지 않도록 데이터는 POST 요구별로 500kB 청크로 구분됩니다.이 모든 것이 잘 작동한다.

이제 대역폭을 절약하고 속도를 높이기 위해 데이터를 전송하기 전에 압축하고 다른 쪽에서 수신했을 때 압축을 해제합니다.작업을 수행할 수 있는 기능 쌍을 3개 찾았는데 어떤 기능을 사용할지 결정하지 못했습니다.

어떤 기능을 추천하고 그 이유는 무엇입니까?

업데이트: 방금 zlib FAQ를 읽었습니다.

형식gzip)gzencode)는1 개의 이나 최종 를 보관 유지하도록 설계되어 있습니다 형식zlib)gzcompress한편 )는 메모리 내 및 통신채널 어플리케이션용으로 설계되었으며 헤더와 트레일러가 훨씬 콤팩트하고 gzip보다 빠른 무결성 검사를 사용합니다.

이 모든 것을 사용할 수 있습니다.이 세 가지 사이에는 미묘한 차이가 있습니다.

  • gzencode()는 GZIP 파일 형식을 사용합니다.gzip명령줄 도구입니다.이 파일 형식에는 옵션의 메타데이터, DEFLATE 압축 데이터 및 CRC32 체크섬 및 길이 검사를 포함하는 바닥글이 포함된 헤더가 있습니다.
  • gzcompress()는 ZLIB 형식을 사용합니다.압축 형식, DEFLATE 압축 데이터 및 ADLER32 체크섬을 포함하는 바닥글만 식별하는 짧은 헤더가 있습니다.
  • gzdeflate()는 raw DEFLATE 알고리즘을 단독으로 사용합니다.이것은 다른 형식의 기초가 됩니다.

3사 모두 동일한 알고리즘을 사용하고 있기 때문에 속도나 효율에 차이가 없습니다. gzencode()에는 원래 파일 이름 및 기타 환경 데이터를 포함하는 기능이 추가됩니다(문자열을 압축하는 경우 사용되지 않습니다). gzencode() ★★★★★★★★★★★★★★★★★」gzcompress()둘 다 체크섬을 추가하여 아카이브의 무결성을 검증할 수 있으므로 신뢰할 수 없는 전송 및 저장 방법에 유용할 수 있습니다.하지 않은 경우, " "는 "를 참조하십시오.gzdeflate()충분할 거야휴대성을 위해 권장하는 것이 좋습니다.gzencode()(GZIP 형식)는, 보다 서포트되고 있습니다.gzcompress()(ZLIB 형식).

매우 짧은 문자열을 압축할 경우, 매우 짧은 입력의 경우 오버헤드가 출력의 상당 부분을 차지할 수 있기 때문에 각 메서드의 오버헤드가 관련되게 됩니다.빈 문자열을 압축하여 측정한 각 메서드의 오버헤드는 다음과 같습니다.

  • gzencode('')= 20 바이트
  • gzcompress('')= 8 바이트
  • gzdeflate('')= 2바이트

저는 PHP 전문가가 아니기 때문에 질문에 대답할 수 없습니다만, 많은 추측이 있어 애매한 정보가 제공되고 있는 것 같습니다.

DEFLATE는 ZLIB, GZIP 등에서 사용되는 압축 알고리즘 이름입니다.이론적으로 GZIP은 대체 압축 알고리즘을 지원하지만 실제로는 없습니다.

"GZIP 알고리즘"과 같은 것은 없습니다.GZIP은 DEFLATE 알고리즘을 사용하여 압축된 데이터 주위에 프레임 데이터를 배치합니다.GZIP을 사용하면 파일 이름, 파일 시간, CRC, 주석 등을 추가할 수 있습니다.다만, 이 메타데이터는 옵션이며, 많은 gzipper가 생략하고 있습니다.

ZLIB는 다른 제한된 메타데이터 세트 및 특정 2바이트 헤더를 제외하고는 유사합니다.

이는 모두 IETF RFC 1950, 19511952에 기재되어 있습니다.

"gzip 알고리즘이 DEFLATE보다 더 잘 압축된다"고 말하는 것은 말도 안 됩니다.gzip 알고리즘은 없습니다.그리고 GZIP 형식에서 사용되는 알고리즘은 DEFLATE입니다.

모든 방식은 기본적으로 동일하며, 그 차이는 대부분 헤더에 있습니다.개인적으로 gzencode를 사용하면 gzip 유틸리티에 대한 명령줄 호출과 동일한 출력이 생성됩니다.

언급URL : https://stackoverflow.com/questions/621976/which-compression-method-to-use-in-php

반응형