> php教程 > php手册 > 본문

PHP的gzencode和gzdeflate以及gzcompress

WBOY
풀어 주다: 2016-06-06 20:11:03
원래의
2197명이 탐색했습니다.

参考资料 http://zhiwei.li/text/2013/04/%E7%94%A8zlib%E8%A7%A3%E5%8E%8B%E7%BC%A9gzip/ http://www.php.net/manual/en/function.gzencode.php http://stackoverflow.com/questions/621976/which-compression-method-to-use-in-php gzencode 建立一个gzip

参考资料

http://zhiwei.li/text/2013/04/%E7%94%A8zlib%E8%A7%A3%E5%8E%8B%E7%BC%A9gzip/

http://www.php.net/manual/en/function.gzencode.php

http://stackoverflow.com/questions/621976/which-compression-method-to-use-in-php

gzencode  建立一个gzip压缩的字符串
$encodingmode = FORCEGZIP   默认为强制gzip
产生的压缩数据 同 Linux下的gzip命令 兼容

$level = -1
0为不压缩
9最强压缩率
不指定,就使用zlib库的默认压缩率

在PHP 5.4.0 之前, 使用 FORCE_DEFLATE , 输出是, 在一个gzip文件头之后, 没有crc32校验, 然后是 标准的zlib压缩数据(包括zlib头)

在PHP 5.4.0及其之后, FORCE_DEFLATE输出一个 RFC1950兼容的数据(包含zlib头, 压缩数据, 以及一个adler校验)

gzip格式,用于文件压缩,能保存原始文件名和最后一次修改日期等信息

gzdeflate

使用DEFLATE数据格式 压缩,   使用DEFLATE算法, 是其他格式的基础

$encoding = ZLIBENCODINGRAW

这个函数生成纯粹的压缩数据,没有任何 头部信息和CRC信息

gzcompress

使用ZLIB 格式, 它含有简单的头部信息.

设计来在内存中使用,或者进程间通信,  有一个精简的头部和尾部信息, 并使用比gzip更快的完整性校验算法

头部是2个字节,尾部是4个字节

————–对于http协议中的gzip, 就是使用gzcompress和gzuncompress来压缩和解压缩

网上一个谬误,就是这3套函数,使用不同的算法,gzcompress使用的是什么GZIP 算法,

其实这套函数,都是使用同一套压缩算法,DEFLATE算法.

区别是gzdeflate纯压缩,没有任何头部信息

gzcompress有简单的头部信息和尾部校验

gzip有比较完整的头部信息和校验,适合于文件压缩

那种比较这3套函数的压缩率的人,纯粹是无知得滑稽可笑….

另外 pkzip格式也是使用这套算法,只不过文件头部格式的定义,跟gzip不一样

另外,在Java中也存在这种区别, GZIPOutputStream 产生的是 gzip命令兼容的格式, 要用gzdecode()才能正确解压缩

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