ホームページ  >  記事  >  バックエンド開発  >  PHP における fopen/file_get_contents とcurlのパフォーマンス効率の比較

PHP における fopen/file_get_contents とcurlのパフォーマンス効率の比較

WBOY
WBOYオリジナル
2016-06-20 13:04:111005ブラウズ

PHP での fopen/file_get_contents とcurlのパフォーマンス効率の比較。

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

(2) fopen/file_get_contents が HTTP リクエストを行う場合、http_fopen_wrapper を使用し、keeplive を使用しません。しかしカールならできる。このようにして、複数のリンクを複数回リクエストする場合、curl はより効率的になります。 (ヘッダーの設定はできるはず)

(3) fopen/file_get_contents 関数は、php.ini ファイルのallow_url_open オプション設定の影響を受けます。設定がオフになっている場合、この機能は無効になります。 Curl はこの設定の影響を受けません。

(4)curl は、POST データ、フォーム送信など、さまざまなリクエストをシミュレートできます。ユーザーは、独自のニーズに応じてリクエストをカスタマイズできます。また、fopen/file_get_contents は get メソッドのみを使用してデータを取得できます。

(5) fopen/file_get_contents はバイナリ ファイルを正しくダウンロードできません。

(6) fopen/file_get_contents は ssl リクエストを正しく処理できません。

(7)curl はマルチスレッドを利用できます。

(8) file_get_contents を使用するときにネットワークの問題が発生すると、ここでいくつかの処理が蓄積されやすくなります。

(9) 継続的に接続したい場合は、複数のページを複数回リクエストしてください。その場合、file_get_contents に問題が発生します。取得した内容が正しくない場合もあります。したがって、同様の収集作業を行う場合は、代わりにcurlを使用するのがより正しい選択です。


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