ホームページ  >  記事  >  バックエンド開発  >  PHP file_get_contents 関数のタイムアウトに対するいくつかの解決策

PHP file_get_contents 関数のタイムアウトに対するいくつかの解決策

WBOY
WBOYオリジナル
2016-06-13 13:25:17960ブラウズ

PHP file_get_contents 関数のタイムアウトに対するいくつかの解決策

?

file_get_contents 関数を使用すると、タイムアウトが頻繁に発生します。この場合、エラー メッセージを確認して、どのようなエラーであるかを確認する必要があります。この場合は、読み取りタイムアウトを試してください。何らかの方法でそれを回避または解決します。
ここには 2 つのタイプがあります: ?
1. タイムアウトの制限時間を増やしますか?
ここで注意してください: set_time_limit は PHP プログラムのタイムアウトのみを設定し、URL を読み取る file_get_contents 関数のタイムアウトは設定しません。 ?
当初、set_time_limit は file_get_contents にも影響を与える可能性があると考えていましたが、テストした結果、無効でした。 file_get_contents の遅延を実際に変更するには、リソース $context のタイムアウト パラメーターを使用できます: ?
$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); 
?

2. 1 回遅延が発生した場合、何回試行する必要がありますか?
ネットワークやその他の要因によって失敗する場合があります。解決策はありませんが、失敗する場合は、何度か試してください。それでも失敗する場合は、諦めてください。 file_get_contents() が失敗すると FALSE が返されるため、次のようにコードを記述できます: ?

$cnt=0; 
while($cnt < 3 && ($str=@file_get_contents('http…'))===FALSE) $cnt++; 
?

?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。