我使用curl访问另一个网站的网址,其实这另一个网站是同一个服务器和IP,只是域名不同。而且都是unxix的,
采用同步执行curl_exec,中共耗时不多不少,刚好5秒。用此函数访问另外网站则正常、
我很纳闷。为什么刚好5秒呢?而且这绝不是服务器速度和网速,那边的程序就一条语句  echo "OK" ;
我在浏览器直接调用其网址也是不需要时间的。
请求解答。谢谢

解决方案 »

  1.   

    说明5秒的那个域名解析DNS太慢了。
      

  2.   

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);   
        curl_setopt($ch, CURLOPT_HEADER, false);
        //curl_setopt($ch,CURLOPT_TIMEOUT , 10 );             //超时 10  秒 
        //curl_setopt($ch, CURLOPT_HTTPHEADER,array("Expect:"));
        curl_setopt($ch, CURLOPT_COOKIESESSION,1);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        //curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL , 1);    
         echo(time());    $file_contents = curl_exec($ch);               //执行 
           echo(time());
    以上两个时间差就是5秒。  我在网上搜索好像也有遇到的。说他也是第一次执行总是5秒、
    目的网站我试过多个,比如百度。实际上我是用来访问淘宝api的,他们的响应速度是以ms计的。
      

  3.   

    估计问题出在服务器配置上,绝不是网速和目的站点的问题。我在unix服务器上执行:
     time curl -4 http://www.baidu.com
    结果也是real    0m5.140s
    user    0m0.001s
    sys     0m0.004s而且每次都是5秒多几十一百多毫秒。我就奇怪了,为什么总是要耗去那5秒。
      

  4.   

    time curl   -4   119.75.218.45  real    0m0.015s
    user    0m0.004s
    sys     0m0.000s
    似乎要接近答案了,我是使用IP地址,速度奇快。 那么是不是服务器解析域名DNS耗的时呢?熟悉unix系统的帮忙解答,不胜感激。
      

  5.   

    大约看明白什么意思了 
     root 打开 /etc/nsswitch.conf里面大概有一行是
    hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4注释掉(在前面添加一个#)
    然后在下面增加一行
    hosts: files dns保存.
    然后试吧,祝你好运...
      

  6.   

    感谢 PhpNewnew , 你说的那个设置好像我机子是那这样设置的。但仍然感谢。
    我使用的方式是 安装了 DNSmasq
    搞了大半天终于解决。对unix我是很不熟悉,往往就是照做操作,不知缘由。我本就是搞开发的,一遇到系统头就晕。