現在、SOAPWebサービスに大きく依存しているWebサイトでパフォーマンスの調整を行うことを検討しています。しかし...私たちのサーバーはベルギーにあり、接続するWebサービスはサンフランシスコにあるので、控えめに言っても長距離接続です。
私たちのウェブサイトはPHPを利用しており、PHPに組み込まれているSoapClientクラスを使用しています。Webサービスへの呼び出しには平均で0.7秒かかり、ページごとに約3〜5回のリクエストを実行しています。可能なすべての要求/応答キャッシュはすでに実装されているため、接続速度を向上させる他の方法を検討しています。
これはSoapClientをインスタンス化するコードです。私が今探しているのは、単一のリクエストの速度を向上させる他の方法/メソッドです。誰かアイデアや提案がありますか?
private function _createClient()
{
try {
$wsdl = sprintf($this->config->wsUrl.'?wsdl', $this->wsdl);
$client = new SoapClient($wsdl, array(
'soap_version' => SOAP_1_1,
'encoding' => 'utf-8',
'connection_timeout' => 5,
'cache_wsdl' => 1,
'trace' => 1,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS
));
$header_tags = array('username' => new SOAPVar($this->config->wsUsername, XSD_STRING, null, null, null, $this->ns),
'password' => new SOAPVar(md5($this->config->wsPassword), XSD_STRING, null, null, null, $this->ns));
$header_body = new SOAPVar($header_tags, SOAP_ENC_OBJECT);
$header = new SOAPHeader($this->ns, 'AuthHeaderElement', $header_body);
$client->__setSoapHeaders($header);
} catch (SoapFault $e){
controller('Error')->error($id.': Webservice connection error '.$e->getCode());
exit;
}
$this->client = $client;
return $this->client;
}