PHP Curl保持代理连接生效

问题描述:

CURLOPT_VERBOSE解释说,在实际向Web链接发出请求之前,系统需要时间连接到PROXY。PHP Curl保持代理连接生效

$ch = curl_init("$url"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0); 


curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 


curl_setopt($ch, CURLOPT_ENCODING, "gzip"); 
curl_setopt($ch, CURLOPT_PROXY, "$ip"); 
curl_setopt($ch, CURLOPT_PROXYPORT, "$po"); 



$response = curl_exec($ch); 
$errmsg = curl_error($ch); 
$cInfo = curl_getinfo($ch); 
curl_close($ch); 

我想执行多个链接而不关闭卷曲以减少延迟。有什么办法让PROXY保持活跃状态​​并对链接进行多重请求?

当curl使用代理时,连接会一直保持打开状态,直到调用curl_close。

两点很重要,

  1. 首先/最初的代理连接总是想花时间(潜伏期)
  2. 当连接建立后,不要关闭连接,只需根据需要调整参数。

有关示例:

//$ch = curl_init("$url"); 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0); 


curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 


curl_setopt($ch, CURLOPT_ENCODING, "gzip"); 
curl_setopt($ch, CURLOPT_PROXY, "$ip"); 
curl_setopt($ch, CURLOPT_PROXYPORT, "$po"); 



curl_setopt($context, CURLOPT_URL, $url); // Request One 
$response = curl_exec($ch); 
$errmsg = curl_error($ch); 
$cInfo = curl_getinfo($ch); 

curl_setopt($context, CURLOPT_URL, $url); // Request Two 
$response = curl_exec($ch); 
$errmsg = curl_error($ch); 
$cInfo = curl_getinfo($ch); 

curl_setopt($context, CURLOPT_URL, $url); // Request Three 
$response = curl_exec($ch); 
$errmsg = curl_error($ch); 
$cInfo = curl_getinfo($ch); 

curl_close($ch); //Closing after all requests 

第一请求将在连接建立一段时间,其取决于多种因素的代理。第一次请求后,所有请求将会更快,并且将基于实际的代理速度(提供的服务器脚本> =代理速度)发生。

我认为我们不能做持久连接。如果你知道如何做到这一点,请分享:-)