对于记录()函数,使用DNS_ANY获取所有记录比单独调用类型更多或更少地发出http (或其他协议)请求吗?
// Is just 1 request? Or many requests (1 per each record type)?
dns_get_record('example.com', DNS_ANY);
VS
// 3 total requests?
dns_get_record('example.com', DNS_A);
dns_get_record('example.com', DNS_AAAA);
dns_get_record('example.com', DNS_MX); 基本上,我想尽量减少网络请求,但我不知道dns_get_record()是如何工作的。
由于文档中说DNS_ANY并不总是返回所有记录,所以我想我可以试着单独调用我想要的类型,以获得更可预测的结果。但是这样做会使3个单独的请求与DNS_ANY的一个请求相对应。这是真的吗?
顺便说一下,如果任何类型为null,DNS_ALL或DNS_A + DNS_AAAA + DNS_MX将返回false,因此我不能这样做。
发布于 2014-12-08 22:26:25
为每种类型单独获取信息是效率低下的,因为这将涉及多个请求,而使用DNS_ANY参数和dns_get_record()只获取一个请求中的所有信息。DNS_ANY是一个参数,可以方便地查询dns服务器的信息。使用这个特定的参数,您可能会得到相当多的信息。
如果您尝试使用类似于gmail.com这样的域的Linux命令行提示符"dig“这样的实用工具,您自己就可以看到这一点,如下所示:
dig gmail.com ANY
产出如下:
`;; QUESTION SECTION:
;gmail.com. IN ANY
;; ANSWER SECTION:
gmail.com. 2386 IN MX 30 alt3.gmail-smtp-in.l.google.c om.
gmail.com. 2386 IN MX 40 alt4.gmail-smtp-in.l.google.c om.
gmail.com. 2386 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 2386 IN MX 10 alt1.gmail-smtp-in.l.google.c om.
gmail.com. 2386 IN MX 20 alt2.gmail-smtp-in.l.google.c om.
gmail.com. 85186 IN SOA ns1.google.com. dns-admin.google .com. 2012061200 21600 3600 1209600 300
gmail.com. 81180 IN NS ns3.google.com.
gmail.com. 81180 IN NS ns4.google.com.
gmail.com. 81180 IN NS ns1.google.com.
gmail.com. 81180 IN NS ns2.google.com.
;; AUTHORITY SECTION:
gmail.com. 81180 IN NS ns2.google.com.
gmail.com. 81180 IN NS ns3.google.com.
gmail.com. 81180 IN NS ns4.google.com.
gmail.com. 81180 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 223708 IN A 216.239.32.10
ns2.google.com. 223708 IN A 216.239.34.10
ns3.google.com. 223708 IN A 216.239.36.10
ns4.google.com. 223708 IN A 216.239.38.10
;; Query time: 4 msec
[snip] PHP的dns_get_record()的行为类似于dig实用程序,即它与dns服务器联系并执行查询。像"DNS_ANY“这样的参数是有利的,因为它可以同时得到所有的东西。因为"dig“花费了4毫秒,所以我认为dns_get_record()所用的时间大约是同样长,或者稍微长一点。由于DNS_ANY参数可能会产生比所需的信息更多的信息,例如,通过将DNS_MX与该函数一起使用,可以将该查询限制为"MX“记录。
如果您对该函数的PHP内部源代码感到好奇,请查看这里。内部源代码通常是用C语言编写的。
如果您想了解更多关于dns系统如何工作的信息,特别是在使用PHP时,请参阅我的文章“电子邮件验证”(2008年6月)。
https://stackoverflow.com/questions/26920802
复制相似问题