哪个函数可以收缩http请求?

时间:2017-02-20 13:42:05

标签: php http gzip zlib

我向远程服务发出HTTP POST请求,要求邮件正文“缩小”(并且Content-encoding: deflate应该在标头中发送)。根据我的理解,RFC 1950涵盖了这一点。我应该使用哪种PHP功能兼容?

  • gzencode
  • gzdeflate
  • gzcompress

1 个答案:

答案 0 :(得分:2)

Content-Encoding: deflate要求提供数据using the zlib structure (defined in RFC 1950), with the deflate compression algorithm (defined in RFC 1951)

考虑

<?php
    $str = 'test';

    $defl = gzdeflate($str);
    echo bin2hex($defl), "\n";

    $comp = gzcompress($str);
    echo bin2hex($comp), "\n";
?>

这给了我们:

2b492d2e0100
789c2b492d2e0100045d01c1

所以gzcompress结果是前面有gzdeflate的{​​{1}}'缓冲区,它似乎是一个有效的zlib标头

789c

后跟4个字节的校验和。这就是我们正在寻找的。

总结一下,

  • 0111 | 1000 | 11100 | 0 | 10 CINFO | CM | FCHECK | FDICT | FLEVEL 7=32bit | 8=deflate | | no dict | 2=default algo 返回原始缩减缓冲区(RFC 1951)
  • gzdeflate返回包含在zlib stuff(RFC 1950)
  • 中的缩小缓冲区
  • gzcompress需要一个包装缓冲区,即在发送缩减数据时使用Content-Encoding: deflate

请注意,令人困惑的命名:gzcompress gzdeflateContent-Encoding: deflate <{1}}。去搞清楚!