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 ?