file_get_contents の高度な使い方については、まず file_get_contents のタイムアウト問題を解決し、タイムアウトがエラーを返した後、js で settimeout のように試してみると、3 回または 5 回以上エラーが発生すると、接続できないことが確認されます。サーバーと完全にあきらめます。
ここに 2 つの簡単な解決策があります:
1. タイムアウトの制限時間を増やします
注: set_time_limit は、URL を読み取る file_get_contents 関数のタイムアウトではなく、PHP プログラムのタイムアウトを設定するだけです。
当初、set_time_limit は file_get_contents にも影響を与えるのではないかと考えましたが、テストした結果、無効でした。 file_get_contents の遅延を実際に変更するには、リソース $context の timeout パラメーターを使用できます:
PHP プログラム コードは次のとおりです:
$opts = array( 'http'=>array( 'method'=>"GET", 'timeout'=>60, ) ); $context = stream_context_create($opts); $html =file_get_contents('http://www.php.cn', false, $context); fpassthru($fp);
次に、複数回試してください
PHP プログラム コードは次のとおりです:
$cnt=0; while($cnt < 3 && ($str=@file_get_contents('http...'))===FALSE){ $cnt++; }
上記の方法でタイムアウトに対処しても大丈夫です。次に、次のように、file_get_contents を使用して Post を実装する方法を示します:
PHP プログラム コード
function Post($url, $post = null){ $context = array(); if (is_array($post)) { ksort($post); $context['http'] = array ( 'timeout'=>60, 'method' => 'POST', 'content' => http_build_query($post, '', '&'), ); } return file_get_contents($url, false, stream_context_create($context)); } $data = array ( 'name' => 'test', 'email' => 'test@gmail.com', 'submit' => 'submit', ); echo Post('http://www.php.cn', $data);
ドキュメント ヘッダーの Set_time_out に注意してください。そうしないと、ドキュメント全体がタイムアウトになります。
関連する推奨事項:
phpのfopen()とfile_get_contents()の詳細説明
phpのfile_get_contents()よりも優れたcURLの詳細な例
file_get_contentsに関する10のおすすめ記事
以上がfile_get_contents の高度な使用方法の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。