当前位置: 首页 > 面试题库 >

在PHP中使用哪种压缩方法?

史超英
2023-03-14
问题内容

我使用两个PHP脚本来移动大量数据:一个在客户端使用命令行PHP脚本,另一个在Apache之后。我将数据发布到服务器端,并使用php://
input流将其保存在Web服务器端。为了防止达到任何内存限制,对于每个POST请求,将数据分成500kB的块。所有这些都很好。

现在,为了节省带宽并加快速度,我想在发送之前先压缩数据,然后在另一端接收时解压缩。我发现3对函数可以完成这项工作,但是我无法决定要使用哪个函数:

  • gzencode / gzdecode
  • gzdeflate / gzinflate
  • gzcompress / gzuncompress

您会推荐哪一对功能,为什么?

更新: 我刚刚阅读了zlib FAQ:

gzip格式(gzencode)旨在保留有关单个文件的目录信息,例如名称和最后修改日期。gzcompress另一方面,zlib格式()专为内存和通信通道应用程序而设计,它具有更紧凑的标题和尾部,并且比gzip使用更快的完整性检查。


问题答案:

所有这些都可以使用。两者之间有细微的差别:

  • gzencode() 使用GZIP文件格式,与gzip命令行工具相同。此文件格式的标头包含可选的元数据,DEFLATE压缩数据以及包含CRC32校验和和长度校验的页脚。
  • gzcompress() 使用ZLIB格式。它具有较短的标头,仅用于标识压缩格式,DEFLATE压缩数据以及包含ADLER32校验和的页脚。
  • gzdeflate()独自 使用原始的DEFLATE算法,这是其他两种格式的基础。

这三个函数均在后台使用相同的算法,因此它们的速度或效率不会有所不同。
gzencode()添加了包含原始文件名和其他环境数据的功能(仅在压缩字符串时未使用)。
gzencode()gzcompress()这两个添加校验和,所以归档文件的完整性进行验证,它可以在不可靠的传输和存储的方法是有用的。如果所有内容都存储在本地,并且您不需要任何其他元数据,那么gzdeflate()就足够了。为了可移植性,我建议gzencode()(GZIP
gzcompress()格式)在其他工具中可能比(ZLIB格式)更受支持。

当压缩非常短的字符串时,每种方法的开销都很重要,因为对于非常短的输入,开销可能占输出的很大一部分。通过压缩空字符串来衡量的每种方法的开销为:

  • gzencode('') = 20字节
  • gzcompress('') = 8个字节
  • gzdeflate('') = 2个字节


 类似资料:
  • 本文向大家介绍php压缩和解压缩字符串的方法,包括了php压缩和解压缩字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php压缩和解压缩字符串的方法。分享给大家供大家参考。具体如下: 下面php代码通过gzcompress和gzuncompress压缩和解压缩字符串,可以设定压缩级别 希望本文所述对大家的php程序设计有所帮助。

  • 问题内容: 我正在写一个分析页面,该页面将帮助我找出应用程序中的错误。从本质上讲,它允许直观地比较实际数据和日志条目,并对数据进行一些分析。 由于这仅用于调试,并且由于我将其部署在实时站点中,因此我希望它具有尽可能小的服务器负载。一些分析选项将包括相当繁重的子字符串搜索或n 2个操作,因此我将其分流给客户端。 这意味着PHP页面将仅从表和日志中获取数据,对其中的一些进行JSON并将其写出。然后,客

  • 问题内容: 有人可以向我解释zlib库在Nodejs中如何工作吗? 我对Node.js很陌生,还不确定如何使用缓冲区和流。 我的简单情况是一个字符串变量,我想将字符串压缩或解压缩(压缩或膨胀,gzip或gunzip等)到另一个字符串。 即(我希望它如何工作) 感谢您的帮助:) 问题答案: 更新 :没意识到在节点0.5中有一个新的内置“ zlib”模块。我在下面的答案是针对第三方node- zlib

  • 我有一个正在工作的python模块,它能够读取LZMA压缩的SWF的头,但是它需要一个名为pyLZMA的模块,而这个模块似乎不想安装在我的服务器上,并且让它在本地工作是一个巨大的麻烦,所以如果有PHP解决方案的话,我更希望有一个PHP解决方案。

  • 本文向大家介绍PHP自带ZIP压缩、解压缩类ZipArchiv使用指南,包括了PHP自带ZIP压缩、解压缩类ZipArchiv使用指南的使用技巧和注意事项,需要的朋友参考一下 要使用该PHP扩展类,需要(PHP 5 >= 5.2.0, PECL zip >= 1.1.0),部分方法需要 PHP 5.2.+,且php.ini配置支持zip 对于win系统,直接去掉php_zip.dll 扩展的注释,

  • 本文向大家介绍Android中3种图片压缩处理方法,包括了Android中3种图片压缩处理方法的使用技巧和注意事项,需要的朋友参考一下 Android中图片的存在形式: 1:文件形式:二进制形式存在与硬盘中。 2:流的形式:二进制形式存在与内存中。 3:Bitmap的形式 三种形式的区别: 文件形式和流的形式:对图片体积大小并没有影响。也就是说,如果你手机SD卡上的图片通过流的形式读到内存中,在内