我有一个大数据量移动使用两个PHP scripts:一个对客户的侧采用command line PHP script和其他背后Apache.我后的数据服务器方和使用php://input流,以保存它在网络服务器结束。为了防止达成任何存储器限制、数据分为500kb块,每个职位的请求。这一切工作正常。

现在,为了保存的带宽并加速这一过程,我要压缩的数据发送之前和解,当收到另一端。我发现3的对功能,可以做的工作,但我无法决定使用哪一个:

这对职能将你的建议为什么?

更新: 我只是读取zlib常见问题:

Gzip format(gzencode)是设计为保留的目录信息的一个单一的文件,诸如姓名和最后修改的日期。Zlib格式(gzcompress)另一方面是设计用于存储和通信信道应用,并且具有更为紧凑的标题和拖车以及使用更快的完整性检查比gzip。

有帮助吗?

解决方案

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

  • gzencode() 使用压缩文件的格式相同 gzip 命令行工具。这个文件格式的标题含有可选择的元数据,放气压缩的数据和脚注含有CRC32checksum和长度的检查。
  • gzcompress() 使用ZLIB格式。它有一个较短的标题仅服务,以识别的压缩的格式,缩压缩的数据,和一个脚注中含有一个ADLER32校验。
  • gzdeflate() 使用原始紧缩算法在其自己的基础,也是为其他格式。

所有三个使用同样的算法。 gzencode() 增加的能力,包括原始文件的名称和其他环境数据(这是未使用的时只是压缩string)。 gzencode()gzcompress() 都添加一个校验,因此完整的档案,可以验证,可以使用这些不可靠的传输和存储的方法。如果一切都被储存在本地的,你并不需要任何额外的元数据,然后 gzdeflate() 就足够了。为了便携性,我建议 gzencode() (GZIP format)这可能是更好的支持比 gzcompress() (ZLIB格式)除其他工具。

在压缩非常短串的开销的每一个方法成为相关,因为很短输入的开销可以包括一个重要部分的产出。开销用于每种方法,测定通过压缩空string,是:

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

其他提示

我没有PHP专家,并不能回答提出的问题,但似乎有很多猜测,说在这里,和模糊的信息正在提供的.

放气的压缩算法所使用的ZLIB,GZIP和其他人。在理论上,GZIP支持替代压缩算法的,但在实践中,有没有。

没有这样的事"的压缩算法"。GZIP使用压缩算法,并提出框架数据的压缩的数据。与GZIP你可以添加的东西,如文件,该文件的时间,儿童权利委员会,即使一个评论。这种元数据是可选的,不过,许多gzippers只是忽略它。

ZLIB是类似的,除了与不同的、更加有限的元数据,以及一个特定的2个字节的标题。

这是所有在IETF Rfc 1950, 1951, , 1952.

说"gzip压缩算法比DEFLATE"只是无稽之谈。没有压缩算法。和算法的使用在GZIP format 是放气.

所有的方法都基本上相同,它们之间的差异多数是在头。我个人会使用gzencode,这将产生输出这等于命令行调用的gzip实用工具。

我不得不解gzip压缩文件在PHP用C++。我发现PHP gzencode 和它的对应方 gzdecode 使用 Z_NO_FLUSH 方法和结束时块的数据进行编码/解码,适用 Z_FINISH.例如/教程在C显示在zlib网站可用于压缩和压缩gziped文件从PHP,只要windows位和存水平改变为允许gzip通和通货膨胀.

额外的:它似乎大多数人在此线有没有什么想法"压缩的方法"的意思。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top