PHP套接字流gzip压缩数据

时间:2016-07-20 02:35:24

标签: php gzip

我通过流中的PHP套接字接收gzip压缩数据。数据符合 RFC-1952 RFC-1950

while(($buffer = socket_read($this->socket, 1024))){
    $content .= $buffer;
}

问题是双重的。

  1. 是否可以使用包装器来读取流?
  2. 如何检测gzip压缩文件的结尾?

3 个答案:

答案 0 :(得分:1)

我相信有一种方法可以做到这一点:

fread();

答案 1 :(得分:0)

您没有检测到gzip的结束。

来自rfc1952

  

gzip文件由一系列"成员"组成。 (压缩数据         套)。每个成员的格式如下所示         部分。成员只是在文件中一个接一个出现,         ,之前,之间或之后没有其他信息

您可以将gzip文件合并在一起,但仍然可以解码它,因为它仍然是一个有效的gzip文件。我认为只有开始签名

  

ID1(身份证1)            ID2(标识2)               它们具有固定值ID1 = 31(0x1f,\ 037),ID2 = 139               (0x8b,\ 213),将文件标识为gzip格式。

(0x1f 0x8b)

我认为如果流停止只是解码文件。

答案 2 :(得分:0)

对于RFC 1950,zlib编码,您使用gzuncompress()