在 PHP 手册中有一条关于 gzdeflate 的评论说:
gzcompress 产生更长的数据,因为它嵌入了以下信息
字符串上的编码。如果您正在压缩数据,
仅在一台机器上处理,那么您无需担心
关于您使用其中哪些功能。但是,如果您通过
使用这些功能将数据压缩到不同的机器,您应该
使用gz压缩。
and then
对各种内容重复运行 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
评论纯属无稽之谈。您可以使用任何gzcompress
, gzdeflate
, or gzencode
生成可以在任何地方便携式解压缩的压缩数据。这些函数的区别仅在于紧缩数据的包装器(RFC 1951)。gzcompress
有一个 zlib 包装器(RFC 1950),gzdeflate
没有包装纸,并且gzencode
有一个 gzip 包装器(RFC 1952)。
我会推荐not using gzdeflate
,因为没有包装器意味着没有完整性检查。gzdeflate
仅当在其外部生成其他包装器时才应使用,例如对于 zip 文件,也使用 deflate 格式。关于速度的评论几乎肯定是错误的。的完整性检查gzuncompress()
与减压相比,花费的时间很少。你应该做你自己的测试。
从这个例子来看,我可能过于笼统,但我想说你应该完全忽略 PHP 文档中的注释。坦率地说,他们是无知的。
顺便说一句,这些函数的命名方式非常混乱。仅有的gzencode
应该有 ”gz
” 的名称,因为这是唯一一家真正从事该业务的公司.gz
格式。gzcompress
听起来像是压缩为gzip格式,但实际上它压缩为zlib格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)