-
$handle = fopen ("http://bbs.it-home.org/", "rb");
- $contents = "" ; !feof($handle)) {
- $contents .= fread($handle, 8192);
- fclose($handle); //取得したコンテンツを出力します。
- ?>
// PHP 5 以降の場合、次のコードを使用できます
-
$handle = fopen("http://bbs.it-home. org", "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.カールを通じて実装
$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?>-
-
- lin UXシステムで次のコードを使用してダウンロードできます
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 よりもはるかに優れています。
-
-
-
-
-
|