Wir sind derzeit in tun einige Performance-Optimierung auf einer Website, die stark auf einem Soap-Webservice angewiesen ist. Aber ... unsere Server stehen in Belgien und der Webservice, mit dem wir uns verbinden, steht in San Francisco, also ist die Verbindung gelinde gesagt sehr weit.
Unsere Website ist PHP-basiert und verwendet die in PHP integrierte SoapClient-Klasse. Im Durchschnitt dauert ein Aufruf des Webservice 0,7 Sekunden, und wir haben etwa 3-5 Anfragen pro Seite. Alle möglichen Anfrage-/Antwort-Zwischenspeicher sind bereits implementiert, so dass wir jetzt nach anderen Möglichkeiten zur Verbesserung der Verbindungsgeschwindigkeit suchen.
Dies ist der Code, der den SoapClient instanziiert. Was ich jetzt suche, sind andere Wege/Methoden, um die Geschwindigkeit bei einzelnen Anfragen zu verbessern. Hat jemand Ideen oder Vorschläge?
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;
}