この記事では、PHP での 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を使用するのがより正しい選択です。