php7 curl 慢,curl获取数据慢的处理方法

在工作中需要用到curl 远程获取数据,但是访问速度太慢了,有时候需要10几秒到20秒,查了下原因,原来是DNS域名解析速度太慢了,所以,这里我们需要先获取抓取网站的域名的IP,然后再进行处理,经过将域名替换为对应的IP后速度大大的提高了,只用不到3秒就可抓取到数据。

请看示例:

// 例如,抓取该网站的信息www.digtime.cn,正常域名速度非常慢,需要十几秒

// $url = 'http://digtime.cn/article/20';

// 根据域名获取IP 120.25.60.5

$ip = gethostbyname("www.digtime.cn");

$url = 'http://'.$ip.'/article/20';

$curl = curl_init ();

curl_setopt ( $curl, CURLOPT_URL, $url );

curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );

curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE );

curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 );

$output = curl_exec ( $curl );

curl_close ( $curl );

print_r($output);

// 此案例可用于解决微信第三方获取Token信息慢的问题:

function get_token($options)

{

// 域名解析 api.weixin.qq.com => 183.57.48.62

$appid = $options['appid'];

$secret = $options['secret'];

$code = $options['code'];

$url = 'https://183.57.48.62/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';

$curl = curl_init ();

curl_setopt ( $curl, CURLOPT_URL, $url );

curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );

curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE );

curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 );

$output = curl_exec ( $curl );

curl_close ( $curl );

return json_decode($output, true);

}

所用到的方法参考:

gethostbyname

返回 IP 网址。

语法: string gethostbyname(string hostname);

返回值: 字符串

函数种类: 网络系统

本函数可返回某个机器名称 (Domain Name) 的 IP 网址 (IP Address)。若执行失败,则返回原来的机器名称。

下例的返回值为 140.137.33.246

echo gethostbyaddr("www.hkcc.pccu.edu.tw");

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值