PHP cURL DNS缓存如何工作?

时间:2017-12-21 13:25:15

标签: php linux curl caching dns

App频繁请求某个服务的同一域名。

PHP-FPM提供前端请求,并且有cron作业启动多个PHP命令行进程。几乎每次都会执行对该域下的URL的请求。代码使用亚马逊php-sdk,它使用cURL来处理网络请求。

如何缓存重复的DNS查询(如果是)?

据我所知,单个php-fpm工作进程用于处理N个请求然后重新生成。 DNS缓存是在多个php-fpm工作者之间共享的吗?

服务器在CentOS和Debian上运行。我了解到默认情况下没有操作系统DNS缓存。安装一些操作系统智能DNS缓存包以缓存单个请求是否有意义?

服务的IP地址可能不经常更改,因此在/etc/hosts中对IP进行硬编码可能不是一个好主意。

1 个答案:

答案 0 :(得分:1)

我不知道您的CentOS和Debian上的配置如何处理DNS缓存,通常所有操作系统都在读取时间以从域SOA记录中刷新DNS缓存。

以下是检查任何域SOA值的方法: https://mxtoolbox.com/SOALookup.aspx

PHP cURL的情况如下:

DNS缓存已于2002年1月在cURL上实现。有关此信息的更多信息,请访问:

https://curl.haxx.se/mail/lib-2002-01/0076.html

您可以使用

打开或关闭cURL的DNS缓存
  

CURLOPT_DNS_USE_GLOBAL_CACHE
  使用全局DNS缓存为TRUE。此选项不是线程安全的,默认情况下已启用。

在此处阅读有关卷曲选项的更多信息:

http://php.net/manual/en/function.curl-setopt.php