PHP的gzencode和gzdeflate以及gzcompress
参考资料 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://*.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://*.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的gzencode和gzdeflate以及gzcompress, 感谢原作者分享。
上一篇: php数组的排序有关问题,求解
推荐阅读
-
PHP的gzencode和gzdeflate以及gzcompress
-
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
-
PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题
-
php函数、类和对象以及类的封装、继承、类的静态方法、静态属性,php静态
-
浅析PHP substr,mb_substr以及mb_strcut的区别和用法_php技巧
-
PHP基本语法以及和Java的区别
-
PHP根本语法以及和Java的区别
-
php: flush()用法以及ob_flush()和flush()的区别实例详解
-
php中include()和require()以及include_once()和require_once()的区别
-
一个不错的PHP缓存类介绍和PHP缓存函数介绍以及使用_PHP教程