HTTP 1.0 プロトコルを介してリモート Web サイトからファイルを取得しています。使用する帯域幅を最小限に抑えるために、ファイルを取得するときに gzip を使用するとよいと思いました。
ヘッダーをどのように形成しても、応答で gzip されたコンテンツを取得しませんでしたが、ブラウザーでテストすると取得できました。また、コードを使用して、自分の Web サイトから提供される gzip 形式も取得します。
これは、サーバーが HTTP 1.1 でのみ利用可能なチャンク転送エンコーディングを使用しているためだと考えました。
プロトコルを HTTP 1.1 に切り替えました。これは以下の私のコードです。私のウェブサイトはこれに答えますが、1.0 が即座に実行するのに数秒かかります。リモート Web サイトで試してみると、応答せずに永遠にロードし続けます。
私の質問は、なぜ 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分かかりました. 次に、接続を閉じる方法を理解する必要があります。それ以外の場合は機能するようです。