1

stream_get_contents は永続的な (KeepAlive) 接続を正しく処理していないようです。戻る前に、接続がタイムアウトするのを待ちます。Apache 2.2 の KeepAliveTimeout はデフォルトで 5 秒です。これについて私にできることはありますか?(サーバーで KeepAlive を無効にするか、protocol_version 1.0 を使用する以外は)

$opts = array('http' =>
    array(
        'method' => 'GET',
        'protocol_version' => 1.1,
    )
);
$context = stream_context_create($opts);
$stream = fopen('http://google.com', 'r', false, $context);
$metadata = stream_get_meta_data($stream);
$data = stream_get_contents($stream);
fclose($stream);

ありがとう。

4

1 に答える 1

1
$opts = array('http' =>
    array(
        'method' => 'GET',
        'protocol_version' => 1.1,
        'header' => 'Connection: close'
    )
);

Connection: close永続的な接続を使用せず、応答が送信された後にTCP接続を切断するようにサーバーに指示します。

これはHTTP/1.1標準の一部でありPHPマニュアルに記載されているとおりです。

[protocol_version]が1.1に設定されている場合、1.1に準拠するのはユーザーの責任です。

于 2012-06-22T20:52:40.550 に答える