1

を使用していますが、タイムアウトfile_get_contentsを定義したいと考えています。私は次のようなコンテキストを作成してそれをやろうとしました:

$timeout = array('http' => array('timeout' => 6));

$context = stream_context_create($timeout);

$xml = file_get_contents($hostName,false,$context);

ただし、この値は無視されます。

4

3 に答える 3

2

デフォルトのタイムアウト セットは 60 秒だと思います。これは、必要な値に変更できます。

<?php

$ctx=stream_context_create(array('http'=>
    array(
        'timeout' => 30 // 30 sec
    )
));

$conetnt = file_get_contents('http://example.com',false,$ctx);
var_dump($conetnt);
?>
于 2013-09-19T20:25:10.270 に答える
1

私はまだコメントできないので (この場合、質問を編集またはフラグ付けする (重複 (?) として) はおそらく適切ではありません)、フォローアップの質問と回答としてコメントを追加さ​​せてください。

  • あなたが言ったとき:

    タイムアウトに小さな値を割り当てましたが、これにもかかわらず file_get_contents は良い結果を返します

たとえば 1 秒のタイムアウトを設定しても、file_get_contents() はそれ以上の時間がかかり、タイムアウトしないということですか? データの「接続」と「読み取り」にかかる時間を区別するために利用できる低レベルの監視はありますか?

  • Fanis が質問 " PHP file_get_contents ignoring timeout? " への回答で述べたように、"file_get_contents()" (および下位レベルのソケット関数ではない) を使用している場合、リモート サーバーに "接続" する時間は、利用可能なini設定、または明らかにコンテキストエントリ。それらによって「読み取り」タイムアウトのみを設定します。

(これは古い質問だと思いますが、同じ質問があったため、検索でこれら2つに遭遇し、それらの間にリンクを設定する必要があると考えました)

于 2012-06-28T06:43:48.917 に答える
1

PHP 5.2.1以降では、timeoutコンテキスト オプションを指定して、コンテキストを file_get_contents() に渡すことができます。

ini_set('default_socket_timeout',    120);
于 2012-04-17T10:16:43.280 に答える