ホームページ >バックエンド開発 >PHPチュートリアル >PHP はリモート Web ページのコンテンツを取得します (fopen、curl メソッド)

PHP はリモート Web ページのコンテンツを取得します (fopen、curl メソッド)

WBOY
WBOYオリジナル
2016-07-25 08:54:231212ブラウズ
  1. $handle = fopen ("http://bbs.it-home.org/", "rb");

  2. $contents = "" ; !feof($handle)) {
  3. $contents .= fread($handle, 8192);
  4. fclose($handle); //取得したコンテンツを出力します。
  5. ?>
  6. // PHP 5 以降の場合、次のコードを使用できます

  7. $handle = fopen("http://bbs.it-home. org", "rb");
  8. $contents = stream_get_contents($handle);
  9. fclose($handle);
  10. echo $contents;
  11. ?>
  12. コードをコピーします
上記のコードでは、ストリームを開くことができませんでした: HTTP リクエストに失敗したというエラーが発生する傾向があります。 解決策: php.ini には 2 つのオプションがあると言う人もいます。allow_url_fopen =on (リモート ファイルを URL 経由で開けることを示します)、user_agent="PHP" (どのスクリプトを介してネットワークにアクセスするかを示します。デフォルトでは "; " を削除します) はい。) サーバーを再起動します。 しかし、一部の人にはまだこの警告メッセージが表示されます。完全な解決策を達成するには、php.ini で user_agent を設定する必要があります。PHP のデフォルトの user_agent を Mozilla/4.0 に変更しました。 MSIE 6.0; Windows NT 5.0) ブラウザをシミュレートします

user_agent="Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.0)"

仕事中にこの問題に遭遇し、完璧に解決したので、みんなと共有します。

2.カールを通じて実装

PHP はリモート Web ページのコンテンツを取得します (fopen、curl メソッド)

$url = "http://bbs.it-home.org";

$ch =curl_setopt ($ch, CURLOPT_URL, $url); ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);
    echo $dxycontent?>
  1. lin UXシステムで次のコードを使用してダウンロードできます exec("wget {$url}");
  2. PHPの外部リソース取得関数fopen/file_get_contents/curlの違いを添付しました。 fopen / file_get_contents はリクエストごとに DNS クエリを再実行し、DNS 情報をキャッシュしません。 ただし、CURL は DNS 情報を自動的にキャッシュします。同じドメイン名の Web ページまたは画像に対するリクエストには、DNS クエリが 1 つだけ必要です。 これにより、DNS クエリの数が大幅に削減されます。 したがって、CURL のパフォーマンスは fopen/file_get_contents よりもはるかに優れています。

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