0

当我这样做时:

print gethostbyname("google.ro");

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

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

print gethostbyname("cduri.ro");

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

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

有什么办法可以做到这一点?

4

1 回答 1

2

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

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

putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
gethostbyname($something);

你没看到吗?或者你没有使用 Linux?它不适合你吗?手册中有更多建议,我不会一一列举。

于 2016-08-19T18:33:11.650 回答