禁用 DNS 缓存 PHP

Spa*_*pta 6 domain-name-system php cache reverse-dns php5

我需要在脚本中获取 DNS 的最新 A 记录。该脚本正在执行一些监视操作。DNS 记录的默认 TTL 为 5 分钟,但监控脚本每分钟运行一次。我正在使用 PHP 的函数 dns_get_record 来获取 A 记录,但我想知道是否有一种方法可以忽略 TTL 缓存并从 DNS 服务器中获取记录而不是缓存。

当然,有什么方法可以强制执行此操作,以便不适用网络级缓存,并且每次运行脚本时,它实际上都会命中 DNS 服务器?

感谢斯帕什·古普塔

Sha*_*dur 7

否。常规客户端无法要求缓存 DNS 服务器刷新其缓存并重新查询权威服务器。这是设计使然——我将留下您可能会遇到的 DDoS 破坏量作为读者练习。

如果您绝对肯定必须拥有未缓存的记录,请查询您的常规名称服务器以获取目标域的 NS 记录,然后直接查询权威服务器。

注意:这通常被认为是粗鲁的行为,除非作为最后的手段,否则真的不应该使用 - 确切地说,什么是如此可怕以至于您绝对需要每分钟进行一次完美的重新检查,以防万一记录更改而您没有注意到?

... 就此而言,为什么默认情况下您的 TTL 为 5 分钟?

ETA:大多数 DNS 服务器,尤其是转发服务器,将坚决拒绝接受任何小于 3600 秒的 TTL。如果幸运的话,他们会默认为至少 1 小时;如果您不是,他们将默认为普遍接受的默认值 86400 秒(24 小时)...