SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【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関数を使うとよいでしょう。

関連するメモ

コメント