Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why my curl connect_time is always equal to 0?

Tags:

php

curl

proxy

I'm trying to test some SOCKS proxy, and when trying to get the "ping" time of this proxy, I'm looking for the variable "connect_time". For HTTP and HTTPS proxy, this seems to working fine, but not for SOCKS (SOCKS4 or SOCKS5) proxy where the connect_time is always equal to 0 (or almost...) !

{
"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":""
}

Here is a piece of my code :

$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);

When trying to ping (with ping...) this proxy from my computer, I've a ping time of about 50ms...

Is there a bug with curl or php ? Do you know can I retrieve the correct ping time ?

like image 901
Kevin Avatar asked Dec 08 '13 12:12

Kevin


1 Answers

When using a proxy, the connect time is the time between the first response of the proxy and the end authentication. So basically your authentication process takes about 0.00023 seconds. Which is quite plausible.

I'm not sure if this is the intended way of how cURL should work because it looks like this is only the case when using proxies on cURL.

I'd consider it a bug.

like image 55
Benjamin de Bos Avatar answered Oct 13 '22 09:10

Benjamin de Bos