首页建站经验 php curl高效获取网页内容(IPV6下超时的解决办法)

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

如果开启了IPv6,curl默认会优先解析 IPv6,在对应domain域名没有 IPv6 的情况下,会等待 IPv6 dns解析失败 timeout 之后才按以前的正常流程去找 IPv4。如果在程序中对curl获取内…

如果开启了IPv6,curl默认会优先解析 IPv6,在对应domain域名没有 IPv6 的情况下,会等待 IPv6 dns解析失败 timeout 之后才按以前的正常流程去找 IPv4。

如果在程序中对curl获取内容都作了较短时间的超时限制,如1秒,有时就会造成无法获取内容的问题。

对于 PHP curl 来讲,只需要加上下面一句即可解决延迟问题:

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

详细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及以上版本时,以上设置才生效。

 

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/17176.html
上一篇php日期转时间戳,指定日期转换成时间戳
下一篇 php中获取网站访客来源的关键词方法
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部