zoukankan      html  css  js  c++  java
  • 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的压缩效果递减。


    压缩解压实例

    /**
     * 判断字符串是否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()

  • 相关阅读:
    SpringCloud微服务初步认识
    SpringCloud-Hystrix:服务熔断与降级
    List接口下重要集合源码分析
    高频面试题:手写一个LRU
    Java基础面试题面经整理(持续更新)
    Redis高可用之主从复制
    Redis过期键删除和内存淘汰
    Redis持久化(RDB与AOF)
    了解Redis事务
    Redis入门与安装
  • 原文地址:https://www.cnblogs.com/7qin/p/13289402.html
Copyright © 2011-2022 走看看