zoukankan      html  css  js  c++  java
  • (转)php-curl响应慢(开发微信授权登陆时碰到的问题)

    最近在做一个php小项目的时候,发现curl调用微信的授权api.weixin.qq.com,经常是需要等待很久,但是有时候却很快。

    刚开始以为是网络慢问题,没去注意。后面通过打上时间日志观察发现,慢的时候基本是在5秒。既然那么有规律了,那肯定是有某个问题的。

    http请求的初始过程是什么呢?dns解析。

    通过ping和wget命令,发现确实在域名解析的那个过程很慢。所以,最终在host直接写死域名,解决了这个问题。

    (

    我也是,呵呵,省事,后期可以考虑安装dns缓存服务

    vim /etc/hosts 增加2行(微信支付好像用到的就是这个2个域名,前面的ip,请以你服务器上ping出来的为准)

    140.207.135.108 api.weixin.qq.com
    140.207.69.101 api.mch.weixin.qq.com

    )

    为什么是5秒(的确是5s,郁闷)呢?

    我们知道配置dns服务的地址在/etc/resolv.conf。

    通过man resolv.conf可以找到

    timeout:n
                               sets the amount of time the resolver will wait for
                               a response from a remote name server before retry-
                               ing the query via a different name server.  Mea-
                               sured in seconds, the default is RES_TIMEOUT (see
                               <resolv.h> ).

    查看/usr/include/resolv.h 可以找到这行代码 # define RES_TIMEOUT                5        /* min. seconds between retries */

    问题是解决了,但是却引申出了很多知识点。

    dns的解析默认超时时间是5秒

    网上说,有可能是开启了ipv6却没有给这个域名分配ipv6的地址,通过查看vim /etc/modprobe.conf,发现没有开启ipv6功能。

    查看域名的解析过程有dig命令

  • 相关阅读:
    你的指纹还安全吗?
    看黑客如何远程黑掉一辆汽车
    利用Teensy进行em410x卡模拟以及暴力破解em410x类门禁系统
    curl命令使用
    Robots.txt
    NodeJs框架
    redis3.2 最新版本启动配置文件redis.conf详细说明
    CentOS 7 上安装 redis3.2.3安装与配置
    Rabbitmq Exchange Type 说明
    windows7下修改hosts文件无效解决办法(转)
  • 原文地址:https://www.cnblogs.com/showker/p/5747309.html
Copyright © 2011-2022 走看看