我正在通过 HTTP 1.0 协议从远程网站获取文件。我想我会很好,并在获取文件时使用 gzip 以最大限度地减少使用的带宽。
无论我如何形成我的标头,我都没有在响应中获得 gzip 压缩的内容,尽管在使用浏览器测试它时它确实如此。我还使用我的代码从我自己的网站获得了 gzip 格式。
我认为这是因为他们的服务器正在使用仅在 HTTP 1.1 中可用的分块传输编码。
我将协议切换到 HTTP 1.1。这是我下面的代码。我的网站对此做出了回答,尽管 1.0 立即执行的操作需要几秒钟。当我在远程网站上尝试它时,它会一直加载而没有回答。
所以我的问题是,为什么 1.1 这么慢?我使用了格式错误的标头还是什么?另外,为什么我的页面回答而另一个没有。有输入吗?谢谢。
$header = array(
'http' => array(
'method' => 'GET',
'header' => 'Accept-Encoding: gzip\r\n' .
'User-Agent: test\r\n)' .
'Accept-Charset: ISO-8859-1,utf-8\r\n' .
'Accept-Encoding: gzip, sdhc, deflate\r\n' .
'Host: www.mysite.test.com\r\n' .,
'protocol_version' => '1.1\r\n'
);
$context = stream_context_create($header);
$file_string = file_get_contents('www.mysite.test.com/test.txt', false, $context);
编辑:在达到服务器保持活动限制之前,它肯定会保持连接打开。花了大约 1.1 分钟从他们的网页上得到我的答案。需要弄清楚如何关闭连接。否则它似乎工作。