为什么我的curl connect_time总是等于0?

时间:2013-12-08 12:14:14

标签: php curl proxy

我正在尝试测试一些SOCKS代理,并且在尝试获取此代理的“ping”时间时,我正在寻找变量“connect_time”。对于HTTP和HTTPS代理,这似乎工作正常,但不适用于SOCKS(SOCKS4或SOCKS5)代理,其中connect_time总是等于0(或几乎......)!

{
"url":"XXX",
"content_type":"text/html",
"http_code":200,
"header_size":178,
"request_size":379,
"filetime":-1,
"ssl_verify_result":0,
"redirect_count":0,
"total_time":4.738683,
"namelookup_time":0.000021,
"connect_time":0.000023,
"pretransfer_time":0.000104,
"size_upload":140,
"size_download":51275,
"speed_download":10820,
"speed_upload":29,
"download_content_length":-1,
"upload_content_length":140,
"starttransfer_time":0.000149,
"redirect_time":0,
"certinfo":{
},
"redirect_url":""
}

这是我的一段代码:

$options = array(
        CURLOPT_PROXY          => $proxy->ip.':'.$proxy->port,
        CURLOPT_TIMEOUT        => 30,
        CURLOPT_CONNECTTIMEOUT => 30,
        CURLOPT_HEADER         => false,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => array('Expect:'),
        CURLOPT_SSL_VERIFYHOST     => false,
        CURLOPT_SSL_VERIFYPEER     => false,
        CURLOPT_VERBOSE         => FALSE,
        CURLOPT_USERAGENT         => 'XXX',
);

if ($proxy->type == 'https')
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
elseif ($proxy->type == 'socks4')
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
elseif ($proxy->type == 'socks5')
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

当尝试从我的计算机ping(使用ping ...)此代理时,我的ping时间约为50毫秒......

curl或php有错误吗?你知道我可以检索正确的ping时间吗?

1 个答案:

答案 0 :(得分:2)

使用代理时,连接时间是代理的第一个响应和结束身份验证之间的时间。所以基本上你的身份验证过程大约需要0.00023秒。这是合情合理的。

我不确定这是否是cURL应该如何工作的预期方式,因为看起来这只是在cURL上使用代理时的情况。

我认为这是一个错误。