教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php解决ipv6使curl获取网页内容超时解决办法

php解决ipv6使curl获取网页内容超时解决办法

发布时间:2016-10-26   编辑:jiaochengji.com
教程集为您提供php解决ipv6使curl获取网页内容超时解决办法等资源,欢迎您收藏本站,我们将为您提供最新的php解决ipv6使curl获取网页内容超时解决办法资源
本文章来给大家介绍在使用ipv6时利用php curl获取网页内容超时解决办法,有碰到此类问题的同学可进入参考参考。

问题原因:

如果开启了IPv6,curl默认会优先解析 IPv6,在对应域名没有 IPv6 的情况下,会等待 IPv6 dns解析失败 timeout 之后才按以前的正常流程去找 IPv4。在程序中我对curl获取内容都作了较为严格的超时限制,所以就会造成无法获取内容的问题。

解决的方法是设置默认访问为ipv4,php的curl设置方法具体如下

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy9668')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy9668>

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
//设置curl默认访问为IPv4
if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')){
      curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}

//设置curl请求连接时的最长秒数,如果设置为0,则无限
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//设置curl总执行动作的最长秒数,如果设置为0,则无限
curl_setopt ($ch, CURLOPT_TIMEOUT,$timeout*3);
$file_contents = curl_exec($ch);
curl_close($ch);

注:curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4) 只有在php版本5.3及以上版本,curl版本7.10.8及以上版本时,以上设置才生效。

您可能感兴趣的文章:
php解决ipv6使curl获取网页内容超时解决办法
解决php curl获取网页内容提示405 method not allowed状态码
PHP Curl出现403错误怎么办?curl错误解决方法
php 获取远程网页内容简单函数
php cURL https链接报错:Unknown SSL protocol error in connection to
php下载css中图片函数
php中curl实现GET和POST请求抓取网页或上传文件
php中curl、fsocket、file_get_content函数比较
php使用curl函数提示Call to undefined function curl_init()
Win8系统磁盘显示被占用100%怎么办?磁盘占100%解决方法

[关闭]
~ ~