【php】curl関数はDNSの名前解決をキャッシュしますか?
問題
curl関数で同じホスト名のサーバーと何度も通信をするのですが、ホスト名からIPアドレスの名前解決は、毎回おこなわれるのでしょうか。
名前解決の結果はキャッシュされないですか?
答え
curlはDNSのキャッシュに対応している(2002年1月対応)。
phpのcurl関数のオプションで、以下がtrueなら、キャッシュする。
CURLOPT_DNS_USE_GLOBAL_CACHE
CURLOPT_DNS_USE_GLOBAL_CACHE
TRUE を設定すると、グローバル DNS キャッシュを利用します。 このオプションはスレッドセーフではありません。 また、PHP がスレッドセーフでない用途でビルドされている場合 (CLI, FCGI, Apache2-Prefork など) には、デフォルトで有効になっています。
httpで通信できる関数としては file_get_contents(‘http://example.com/’); などがあるが、こちらは毎回名前解決をしているようなので、効率よくたくさんの通信をしたいときはcurl関数を使うとよいでしょう。
コメント