我有一个经常调用外部休息服务的功能。多久取决于输入数据,例如。用户要求什么,但想法是批量转换一种特殊的数据和标识符。即使只有 50 次转换,这也非常慢。
使用 php_curl 调用 REST Web 服务。现在我认为为每次转换创建一个新连接会导致这种情况。我尝试重新使用相同的句柄并为每个调用调整 url,我也尝试了这个:
在这两种情况下,我的性能提升都为 0。我在 Windows 上。也许这就是问题?使用 TCPView 工具,我可以很容易地看到新连接是“集体”创建的。也许我解释错了,但对我来说,每次转换似乎仍在创建 1 个连接。
所以我有点迷路了。任何人都知道连接是否真的在 Windows 实现中被重用?会不会是远程服务器造成的?
编辑:
当前设置很简单:
if(empty($this->curlHandle)){
$this->curlHandle = curl_init();
curl_setopt($this->curlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->curlHandle, CURLOPT_PROXY, $this->proxy);
curl_setopt($this->curlHandle, CURLOPT_PROXYPORT, $this->proxyPort);
curl_setopt($this->curlHandle, CURLOPT_HTTP_VERSION, 1.1);
}
//$ch = curl_init();
curl_setopt($this->curlHandle, CURLOPT_URL, $baseUrl . $identifier . '/' . $format);
$result = curl_exec($this->curlHandle);
这里是一个示例调用返回的标头:
HTTP/1.1 200 OK
Date: Fri, 28 Sep 2012 05:23:37 GMT
Server: Apache/2.2.15 (Scientific Linux)
Last-Modified: Fri, 28 Sep 2012 05:16:37 GMT
ETag: "0924166dd08dd5845929794dbd07d288"
Expires: Mon, 08 Oct 2012 05:16:37 GMT
Cache-Control: max-age=864000
Access-Control-Allow-Origin: *
Connection: close
Content-Type: text/plain; charset=UTF-8
编辑2:
有一个不同的远程 Web 服务提供类似的功能(但数据较少,例如查找 ID 数据)。在 Firefox 中运行时,该服务会返回一个保持活动的标头。所以我实现了它。但问题仍然存在。一样慢。然后我使用 curl cmd-line 玩了一下,发现使用 curl 时说服务器返回一个连接:关闭。