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()

 

posted @   笠航  阅读(524)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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工具
点击右上角即可分享
微信分享提示

目录导航