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) を使用してブラウザーをシミュレートします
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
true
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...;