外部休息サービスを頻繁に呼び出す関数があります。入力データに依存する頻度。ユーザーが要求するものですが、アイデアは、特別な種類のデータと識別子をバッチ変換することです。これは、わずか 50 回の変換でも非常に遅くなります。
REST Web サービスは php_curl で呼び出されます。今、私は、単一のコンバージョンごとに新しい接続を作成することがこれを引き起こしていると考えました. 同じハンドルを再利用して、呼び出しごとにURLを調整しようとしましたが、これも試しました:
どちらの場合もパフォーマンスの向上はありませんでした。私は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 を使用すると、サーバーが接続を返すことに気付きました。