gethostbyname php,php gethostbyname 效率问题

最近用到了gethostbyname,在本地的环境Mac+Apache下执行速度非常快,零点几秒上,但是放到服务器端就不行了,服务器端环境 LNMP ,执行时间都在5秒钟以上,怎么才能解决这个问题?

除了gethostbyname,还有什么能将域名解析成ip的其他方法么?

回复内容:

最近用到了gethostbyname,在本地的环境Mac+Apache下执行速度非常快,零点几秒上,但是放到服务器端就不行了,服务器端环境 LNMP ,执行时间都在5秒钟以上,怎么才能解决这个问题?

除了gethostbyname,还有什么能将域名解析成ip的其他方法么?

gethostbyname 需要DNS解析,通常需要1-5秒。

建议换成其他方法。function gethostbyname2($host, $timeout = 3) {

$query = `nslookup -timeout=$timeout -retry=1 $host`;

if(preg_match('/\nAddress: (.*)\n/', $query, $matches))

return trim($matches[1]);

return $host;

}

试了一下你@April.L 的代码好像不对。修改了一下,还有不知道怎么搞的,gethostbyname的执行速度忽然上来了,在1s钟以下,我好像什么都没有改,就睡了一天。。不知道怎么弄的function gethostbyname2($host, $timeout = 3) {

$query = 'nslookup -timeout='.$timeout.' -retry=1 '.$host;

$query = shell_exec($query);

if(preg_match('/\nAddress: (.*)\n/', $query, $matches))

return trim($matches[1]);

return $host;

}

PHP的gethostbyname并没有什么特殊的逻辑, 大部分情况下, 那就是直接调用gethostbyname(3), 而dns解析又和你的网络环境很相关, 所以这个确实不好一概而论 :)

简便方法是在本机或者局域网内的一台机器上安装 DNSMASQ,然后把DNS指过去,用作DNS查询加速,就会快很多了。

相关标签:php 效率

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值