php curl获取网页内容(IPV6下超时)的解决办法
2015-01-24信息快讯网
如果开启了IPv6,curl默认会优先解析 IPv6,在对应域名没有 IPv6 的情况下,会等待 IPv6 dns解析失败 timeout 之后才按以前的正常流程去找 IPv4
原因:
在程序中我对curl获取内容都作了较为严格的超时限制,所以就会造成无法获取内容的问题。
解决方法:设置默认访问为ipv4。
php的curl设置方法如下:
<?php /** * IPV6下curl超时问题 */ $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使用curl和正则表达式抓取网页数据示例
PHP动态生成javascript文件的2个例子
php中的curl使用入门教程和常见用法实例
免费的ip数据库淘宝IP地址库简介和PHP调用实例
关于PHP的curl开启问题探讨
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
ThinkPHP使用UTFWry地址库进行IP定位实例
php使用curl存储cookie的示例
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
php的zip解压缩类pclzip使用示例
解析php中curl_multi的应用
ie与session丢失(新窗口cookie丢失)实测及解决方案
解析将多维数组转换为支持curl提交的一维数组格式
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
将IP地址转换为整型数字的PHP方法、Asp方法和MsSQL方法、MySQL方法
解析php根据ip查询所在地区(非常有用,赶集网就用到)
浅析php插件 HTMLPurifier HTML解析器
php curl选项列表(超详细)
关于php 接口问题(php接口主要也就是运用curl,curl函数)
解析PHP 使用curl提交json格式数据
解析curl提交GET,POST,Cookie的简单方法
如何使用PHP实现javascript的escape和unescape函数
解析PHP函数array_flip()在重复数组元素删除中的作用
php 去除html标记--strip_tags与htmlspecialchars的区别详解