PHP的自带的函数中,有三个压缩相关的函数:gzcompress、gzencode、gzdeflate,下面我们通过一段程序,来比较一下这三个函数的压缩比。
代码:
$string = "8aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeer8aaaaaaaaaaaaaaaaaaaaaaadasd456as
d456asd456asd456asd456asd456asd456asd456asd456asd456asd456asd456fasdf45645645645645645
6456456456456456456456456456456456456456456456456456456456456456456456456a56fs4s4s4s4s
4s4s4s4s4s4s4s4s4s4dsdga133333333333333333333w8etw7q9999999999999999999a23s1dfffffffff
fffffffffffffffa456ssssssssssssdv2sdddddddddddddddddddf";
echo "字符串长度:";
echo strlen($xx);
echo "<br/>gzcompress压缩后长度:" . strlen(gzcompress($string,9));
echo "<br/>gzencode压缩后长度:" . strlen(gzencode($string,9));
echo "<br/>gzdeflate压缩后长度:" . strlen(gzdeflate($string,9));
运行结果是:
字符串长度:393 gzcompress压缩后长度:96 gzencode压缩后长度:108 gzdeflate压缩后长度:90
由此可见,这三个函数按照压缩效果进行排序:gzdeflate、gzcompress、gzencode, gzdeflate压缩效果最好,gzcompress次之,gzencode最差。
分析:
查了下手册,gzcompress、gzencode、gzdeflate这三个函数,分别采用的是zlib、gzip、DEFLATE方式压缩格式。通过上面的运行结果,不知道是否可以这么认为,DEFLATE、zlib、gzip的压缩效果递减。
压缩解压实例
/** * 判断字符串是否base64编码 */ function func_is_base64($str) { return $str == base64_encode(base64_decode($str)) ? true : false; } /** * 压缩内容 */ function func_gzcompress($str, $level = 9) { if (!func_is_base64($str)) { return base64_encode(gzcompress($str, $level)); } return $str; } /** * 解压内容 */ function func_gzuncompress($str) { if (func_is_base64($str)) { return gzuncompress(base64_decode($str)); } return $str; }
经网友测试得出结果:
gzcompress 速度最快,压缩比率较高。
gzdeflate 压缩比率最高,速度稍慢于gzcompress
gzencode 与 gzdeflate 比较接近,gzdeflate稍有优势
bzcompress 速度最慢,压缩比率最慢。
因此建议使用 gzcompress 和 gzdeflate。
———————链接:https://blog.csdn.net/weng_xianhu/article/details/79419551
比较PHP的压缩函数gzencode、gzdeflate和gzcompress
gzencode 默认使用ZLIB_ENCODING_GZIP编码,使用gzip压缩格式,实际上是使用defalte 算法压缩数据,然后加上文件头和adler32校验
gzdeflate 默认使用ZLIB_ENCODING_RAW编码方式,使用deflate数据压缩算法,实际上是先用 LZ77 压缩,然后用霍夫曼编码压缩
gzcompress ;默认使用ZLIB_ENCODING_DEFLATE编码,使用zlib压缩格式,实际上是用 deflate 压缩数据,然后加上 zlib 头和 CRC 校验
这三个函数的比较实质上是三种压缩方法:deflate, zlib, gzip的比较。
从性能的维度看:deflate 好于 gzip 好于 zlib
从文本文件默认压缩率压缩后体积的维度看:deflate 好于 zlib 好于 gzip
PHP的压缩实现依赖于zlib,zlib是一个提供了 deflate, zlib, gzip 压缩方法的函数库。
———————————————————
gzip压缩格式 gzencode(str, num压缩级别) 解压gzdecode()
deflate数据压缩算法 gzdeflate(str, num压缩级别) 解压gzinflate()
zlib压缩格式 gzcompress(str, num压缩级别) 解压gzuncompress()