PHP Socket编程 之 PHP的自带的三个压缩相关的函数:gzcompress、gzencode、gzdeflate
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的压缩效果递减。
压缩解压实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | /** * 判断字符串是否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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具