php - PHP cURL DNS 缓存如何工作?

标签 php linux curl caching dns

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

有由 PHP-FPM 提供服务的前端请求,并且有启动多个 PHP 命令行进程的 cron 作业。几乎每次都会执行对该域下的 URL 的请求。代码利用 Amazon php-sdk,据我所知,它使用 cURL 进行 Web 请求。

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

据我了解,单个 php-fpm 工作进程用于处理 N 个请求,然后重新生成。 DNS 缓存是否在多个 php-fpm 工作人员之间共享?

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

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

最佳答案

我不知道您的 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
TRUE to use a global DNS cache. This option is not thread-safe and is enabled by default.

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

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

关于php - PHP cURL DNS 缓存如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47925978/

相关文章:

php - 如何让我的 Logo 链接回到 wordpress 22 子主题中的主页?

linux - 如何检查条件,然后使用 awk 在条件行之前的行中打印特定字段?

php - 如何通过 woocommerce REST API 添加产品图片?

windows - 我可以将 AS400 上的 DB2 数据库转储到 Windows 或 Linux 吗?

linux - 自定义 genhtml 的 HTML 输出

php - 为什么 cURL 在发送和接收 HTTP 100 继续代码后挂起,而不是继续处理正文?

java - 将 Curl 转换为 Java 的 POST api

javascript - Google Charts 时间线 - PHP 数组作为输入

php - htaccess 仅将 index.html 重定向到 index.php 用于域根目录

java - PHP - MySQL - Java - 确保字符集统一