在 PHP 手册中有一条关于 gzdeflate 的评论说:
gzcompress 生成更长的数据,因为它将有关编码的信息嵌入到字符串中。如果您正在压缩只能在一台机器上处理的数据,那么您无需担心您使用这些功能中的哪一个。但是,如果您将使用这些函数压缩的数据传递到另一台机器,您应该使用 gzcompress。
进而
在各种内容上运行 50000 次重复,我发现 gzdeflate() 和 gzcompress() 无论内容和压缩级别都执行同样快,但 gzinflate() 总是大约是 gzuncompress() 的两倍。
出于我的目的,我将数据存档在机器上以备将来使用。数据经常被读取,但只写入一次。理论上,如果我在某个时候更换服务器,它总有一天会被转移到另一台机器上,但那是几年后的事了。
使用 gzdeflate 和 gzinflate 而不是 gzcompress 和 gzuncompress 对我来说安全吗?
我的想法如下:gzinflate 更快,这将对服务器有很大帮助,因为会有很多读取请求。如果将来某个时候我无法读取文件,那么我应该能够弄清楚如何解压缩文件并重新压缩它,对吗?并不是说 gzinflate 有一天会神奇地不起作用,就像第一条评论似乎在说的那样。即使缺少一个 6 字节的标头,我也确信它会以某种方式扩展。
想法?
更新——基准
每次 10,000 次迭代:
gzdeflate took 19.158888816833 seconds and size 18521
gzinflate took 1.4803981781006 seconds
gzcompress took 19.376484870911 seconds and size 18527
gzuncompress took 1.6339199542999 seconds
gzencode took 20.015944004059 seconds and size 18539
gzdecodetook 1.8822891712189 seconds