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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (38)

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

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

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

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

提问于
用户回答回答于

所有这些都可以使用。三者之间存在细微的差异:

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

DEFLATE是ZLIB,GZIP和其他人使用的压缩算法的名称。理论上,GZIP支持其他压缩算法,但实际上没有。

没有“GZIP算法”这样的东西。GZIP使用DEFLATE算法,并在压缩数据周围放置成帧数据。使用GZIP,你可以添加文件名,文件时间,CRC,甚至注释等内容。尽管这个元数据是可选的,许多gzippers只是省略它。

除了具有不同的,更有限的一组元数据和一个特定的2字节标题之外,ZLIB类似。

扫码关注云+社区

领取腾讯云代金券