首页 文章

PHP cURL DNS缓存如何工作?

提问于
浏览
1

应用程序频繁请求某些服务的相同域名 .

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

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

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

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

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

1 回答

  • 1

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

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

    Here is the situation with PHP cURL:

    DNS缓存在2002年1月在cURL上实现 . 在此处阅读更多相关信息:

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

    您可以使用cURL打开或关闭DNS缓存

    CURLOPT_DNS_USE_GLOBAL_CACHE为TRUE以使用全局DNS缓存 . 此选项不是线程安全的,默认情况下处于启用状态 .

    在这里阅读更多关于卷曲选项:

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

相关问题