PHP file_get_contents関数のタイムアウトのいくつかの解決方法

1028 ワード


ファイルを使用中get_contents関数の場合、タイムアウトが発生することがよくありますが、ここではエラーメッセージを見て、どのエラーなのかを見て、読み取りタイムアウトが一般的です.このような場合は、できるだけ避けるか、解決することができます.
ここでは2つを簡単に紹介します.
一、タイムアウトの時間制限を増やす
注意:set_time_limitはただあなたのPHPプログラムのタイムアウト時間を設定するだけで、file_ではありません.get_contents関数がURLを読み出すタイムアウト時間. 
最初はset_と思ったけどtime_limitもfile_に影響しますget_contentsは、その後テストされましたが、無効です.本当の修正file_get_contents遅延はresource$contextのtimeoutパラメータを使用できます.
$opts = array( 
‘http'=>array( 
‘method'=>”GET”, 
‘timeout'=>60, 
) 
); 
$context = stream_context_create($opts); 
$html =file_get_contents('http://www.example.com', false, $context); 
fpassthru($fp); 
 
二、一度に遅延があれば何度も試してみましょう
時には失敗はネットワークなどの要因によるもので、解決策はありませんが、プログラムを修正することができます.失敗したときに何度も再試行しても、失敗したら放棄します.file_get_contents()が失敗するとFALSEに戻るので、次のようにコードを記述できます.
$cnt=0; 
while($cnt < 3 && ($str=@file_get_contents('http…'))===FALSE) $cnt++;