ホームページ  >  記事  >  バックエンド開発  >  リモート Web コンテンツを取得するための PHP コード fopen、curl はテスト済み

リモート Web コンテンツを取得するための PHP コード fopen、curl はテスト済み

WBOY
WBOYオリジナル
2016-07-29 08:45:231009ブラウズ

1. fopenの使い方

コードをコピー コードは次のとおりです:


$handle = fopen ("http://s.jb51.net/", "rb" );
$contents = "";
while (!feof($handle)) {
$contents .= fread($handle); //出力取得したコンテンツ。

s.jb51.net", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
echo $contents;

?>

しかし、上記のコードは次のような傾向があります。ストリームを開けませんでした: 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.curlで実装します



コードをコピーします

コードは次のとおりです:



$url = "http://s.jb51.net"; ();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  PHP 获取远程网页内容的代码fopen,curl已测$dxycontent =curl_exec($ch); dxycontent;
? >


Linux でダウンロードするには、次のコードを使用します

exec("wget {$url}"); PHP の外部リソース関数 fopen / file_get_contents fopen / の違いfile_get_contents はクエリ要求ごとに DNS を再実行します。DNS 情報はキャッシュされません。 ただし、CURL は DNS 情報を自動的にキャッシュします。同じドメイン名の Web ページまたは画像に対するリクエストには、DNS クエリが 1 つだけ必要です。 これにより、DNS クエリの数が大幅に削減されます。

つまり、CURL のパフォーマンスは fopen/file_get_contents よりもはるかに優れています。

当サイトのオリジナルコンテンツ、転載の際は出典を明記してください。
上記では、PHP がリモート Web コンテンツを取得するための fopen とcurl コードを紹介しました。これには、関連するコンテンツも含まれています。PHP チュートリアルに興味のある友人に役立つことを願っています。


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