php

位置:IT落伍者 >> php >> 浏览文章

php curl获取网页内容(IPV6下超时)的解决办法


发布日期:2018年11月11日
 
php curl获取网页内容(IPV6下超时)的解决办法
如果开启了IPvcurl默认会优先解析 IPv在对应域名没有 IPv 的情况下会等待 IPv dns解析失败 timeout 之后才按以前的正常流程去找 IPv

原因
在程序中我对curl获取内容都作了较为严格的超时限制所以就会造成无法获取内容的问题

解决方法设置默认访问为ipv
php的curl设置方法如下

复制代码 代码如下:
<?php
/**
* IPV下curl超时问题
*/
$ch = curl_init();
curl_setopt ($ch CURLOPT_URL $url);
curl_setopt ($ch CURLOPT_RETURNTRANSFER true);
//设置curl默认访问为IPv
if(defined(CURLOPT_IPRESOLVE) && defined(CURL_IPRESOLVE_V)){
curl_setopt($ch CURLOPT_IPRESOLVE CURL_IPRESOLVE_V);
}
//设置curl请求连接时的最长秒数如果设置为则无限
curl_setopt ($ch CURLOPT_CONNECTTIMEOUT $timeout);
//设置curl总执行动作的最长秒数如果设置为则无限
curl_setopt ($ch CURLOPT_TIMEOUT$timeout*);
$file_contents = curl_exec($ch);
curl_close($ch);


curl_setopt($ch CURLOPT_IPRESOLVE CURL_IPRESOLVE_V) 只有在php版本及以上版本curl版本及以上版本时以上设置才生效

上一篇:Apache下禁止php文件被直接访问的方法

下一篇:解析php根据ip查询所在地区