2013-11-15 49 views
1

我在我的php应用程序中使用curl。它看起来像(简体):在PHP中使用curl连接重用

$handle = curl_init(); 
curl_exec($handle); 
curl_close($handle); 

写在Persistence Is The Way to Happiness章,

使用相同的容易处理对同一主机的后续请求可能只是能够使用已经打开的连接!这大大降低了网络影响。

那么,它是否适用于此代码?将保存连接并curl_init()使用现有连接?如果是 - 他们存放多久?

回答

2

我没有这个测试自己,但这里的如何,我认为它应该工作:

您创建一个卷曲的实例:

$handle = curl_init(); 

然后您设置选项,如URL,该方法(POST或GET)和查询字符串:

curl_setopt($handle, CURLOPT_URL, "http://stackoverflow.com"); 

执行请求:

curl_exec($handle); // execute the request 

更改选项,例如更改URL:

curl_setopt($handle, CURLOPT_URL, "http://stackoverflow.com/test/"); 

再次执行请求时,它应该能够重新使用已经打开的连接:

curl_exec($handle); 

你可以做很多次就像你想用相同的curl实例一样,并且如果可能的话它会重用连接。

最后关闭连接,并删除卷曲实例时,你就大功告成了:

curl_close($handle); 
+0

后数以百万计的请求发出过几天我的PHP 5.6.14冻结的curl_exec这种方式传播(通过日志确认, dbg backtrace)。不知道是否因为连接重用。 – NeverEndingQueue