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

Kev*_*vin 8 php proxy curl

我正在尝试测试一些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":""
}
Run Code Online (Sandbox Code Playgroud)

这是我的一段代码:

$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);
Run Code Online (Sandbox Code Playgroud)

当我尝试ping从我的计算机ping(带...)此代理时,我的ping时间约为50ms ...

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

Ben*_*Bos 2

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

我不确定这是否是 cURL 的预期工作方式,因为看起来只有在 cURL 上使用代理时才会出现这种情况。

我认为这是一个错误。