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

リモート Web コンテンツを取得するための PHP コード (fopen、curl テスト済み)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:28:31773ブラウズ

1. fopenの使い方

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

$handle = fopen ("http://s.jb51.net/", " rb");
$contents = "";
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
echo $contents; / /出力は取得した内容です。
?>

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

// PHP 5 以降では、次のコードを使用できます
$handle = fopen(" http:// 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) を使用してブラウザーをシミュレートします
リモート Web コンテンツを取得するための PHP コード (fopen、curl テスト済み)_PHP チュートリアル
user_agent="Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.0)"

私は仕事中にこの問題に遭遇し、完全に解決したので共有します。みんな。
2.curlで実装します
コードをコピーします コードは次のとおりです:
$url = "http://s.jb51.net"; =curl_init() ; LCURL_SETOPT ($ ch、curlopt_url、$ T、10); d $ dxyContent = CURL_EXEC ($ ch);



; Linux でダウンロードするには
exec("wget {$url}");

PHP が毎回外部リソース関数を取得する場合の違い fopen / file_get_contents /curl

fopen / file_get_contents リクエストは DNS クエリを再実行します。 DNS 情報はキャッシュされません。
ただし、CURL は DNS 情報を自動的にキャッシュします。同じドメイン名の Web ページまたは画像に対するリクエストには、DNS クエリが 1 つだけ必要です。
これにより、DNS クエリの数が大幅に削減されます。
つまり、CURL のパフォーマンスは fopen/file_get_contents よりもはるかに優れています。

スクリプトハウスのオリジナルコンテンツです。転載する場合は出典を明記してください。



http://www.bkjia.com/PHPjc/323602.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/323602.html

1. fopen を使用するためのコピー コードは次のとおりです。 ?php $handle = fopen ("http://s.jb51.net/", "rb"); $contents = "" while (!feof($handle) )) { $contents .= fread($handle, 8192) } fclos...;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。