2012-04-17 12 views
1

私はfile_get_contentsを使用していますが、define a timeoutにします。私はこのような文脈を作成することによってそれを試みました:file_get_contents timeout

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

$context = stream_context_create($timeout); 

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

しかし、この値は無視されます。 PHPのよう

+2

どのようにタイムアウト設定が無視されると思いますか? – hakre

+1

'timeout'が5.2.1で追加されました。あなたのPHPのバージョンを確認してください。 – joar

+0

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

答えて

1

あなたは(timeoutコンテキストオプションを指定してのfile_get_contentsにコンテキストを渡すことができます5.2.1)

ini_set('default_socket_timeout', 120); 
+0

私はこれを試しました ini_set( 'default_socket_timeout'、5); $ xml = file_get_contents($ hostName); しかし、動作しません – user1093588

1

私はまだコメント(および編集や((重複として?)質問にフラグを立てることができないので、

  • あなたが言った:

    I)は、おそらく、私がフォローアップの質問を追加してみましょう、と答えとしてコメント)このケースでは非常に適切ではありませんタイムアウトに小さい値を割り当てられ、これにもかかわらず、のfile_get_contents良い結果を返します

あなたはあなたが言う、のタイムアウトを設定した場合でも、1秒、のfile_get_contents()がもっとかかることを意味しますかそれは、タイムアウトしていないのですか?データの「接続」と「読み込み」に要する時間を区別するための低レベルの監視機能はありますか?

  • Fanisが質問「PHP file_get_contents ignoring timeout?」への彼の答えに言ったように、あなたが「のfile_get_contents()」(およびない低レベルのソケット関数)を使用している場合ので、時間がリモートサーバに「を接続」します利用可能なini設定やコンテキストエントリによって明らかに設定できません。 "read"はタイムアウトに設定されているだけです。

(私は同じ質問があったが、私はそれらの間のリンクを設定する必要があります思ったように私は私の検索では、これら2に走った、これは古い質問です実現けど)

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); 
?>