• 注册
  • 关于作者
    个人说明:他太懒了,什么都没有写
    关注 0 粉丝 0 喜欢 0 内容 238
    雅安
    聊天 送礼
    • 查看作者
    • php curl高效获取网页内容(IPV6下超时的解决办法)

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

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

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

      round robin权重轮循算法实现

      PHP

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

      round robin权重轮循算法实现

      PHP

    • 0
    • 0
    • 0
    • 55
    • 单栏布局 侧栏位置: