执行gethostbyname最多1秒

时间:2016-08-19 17:38:21

标签: php linux server ip gethostbyname

当我这样做时:

print gethostbyname("google.ro");

它在不到1秒的时间内打印IP。

如果我尝试对未存在的域做同样的事情:

print gethostbyname("cduri.ro");

它尝试获取IP 7-8秒,然后失败并将打印域。

我想要实现的是在1秒后以某种方式打破gethostbyname,因为我知道这意味着该域不存在。我有一个很大的域列表,所以我不能等待每个域无法达到7-8秒。我想停下来移动到下一个。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

我查看了手册:http://www.php.net/manual/en/function.gethostbyname.php 并发现了这个:

可以使用RES_OPTIONS环境变量提供底层解析器函数的选项。 (至少在Linux下,请参阅man resolv.conf)将超时和重试设置为1,使DNS查找的最长执行时间为1秒:

putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
gethostbyname($something);
你还没有看到吗?或者你不使用Linux?它不适合你?手册中有更多建议,我不打算全部列出。