Also habe ich eine XMLRPC in Zend PHP entwickelt, die eine SOAP-Anfrage aufruft, um einen anderen Prozess zu starten (SOAP ist nicht mein Skript, aber die XMLRPC ist).XMLRPC Aufruf SOAP müssen Antwort zurückgeben statt Absturz/
Während der SOAP-Anfrage, wenn der Host nicht gefunden wird, stürzt diese manchmal mein XMLRPC-Aufruf. Wie kann ich die XMLRPC-Anforderung mit einer Antwort anstelle eines Fehlers zurückgeben? Sieht die Logik gut aus? Ich weiß, dass die ganze Funktionalität funktioniert und ich habe die gewünschte Antwort bekommen (manchmal), aber ich muss sicherstellen, dass das Skript nicht abstürzt. Irgendwelche Gedanken? Tipps? Hier
ist, was ich habe
try {
$soap_call = new ReportSoapClient();
$soap_call->RunReport();
} catch(Exception $e) {
// Set the Error Alert Email Message
$this->setErrorAlertMessage($this->getErrorAlertMessage()."ERROR: SOAP Exception: ".$e->getMessage());
// Send the Email
$this->sendErrorAlertEmail();
// This set the XMLRPC Response
$this->setXMLRPCResponse('Code: '.$e->getCode().' Message: '.$e->getMessage());
// This is a logger
$this->debug('Code: '.$e->getCode().' Message: '.$e->getMessage());
// Return the XMLRPC Response
return $this->getXMLRPCResponse();
}
Hier ist die E-Mail erhalte ich:
ERROR: SOAP Exception: Could not connect to host
Hier ist der Fehler, den ich bekommen, wenn Absturz (geschieht nur manchmal, warum ???):
Fatal error: Uncaught exception 'Zend_Http_Client_Adapter_Exception' with message 'Read timed out after 10 seconds' in /usr/share/php/libzend-framework-php/Zend/Http/Client/Adapter/Socket.php:512
Stack trace:
#0 /usr/share/php/libzend-framework-php/Zend/Http/Client/Adapter/Socket.php(330): Zend_Http_Client_Adapter_Socket->_checkSocketReadTimeout()
#1 /usr/share/php/libzend-framework-php/Zend/Http/Client.php(989): Zend_Http_Client_Adapter_Socket->read()
#2 /usr/share/php/libzend-framework-php/Zend/XmlRpc/Client.php(280): Zend_Http_Client->request('POST')
#3 /usr/share/php/libzend-framework-php/Zend/XmlRpc/Client.php(361): Zend_XmlRpc_Client->doRequest(Object(Zend_XmlRpc_Request))
#4 /usr/share/php/libzend-framework-php/Zend/XmlRpc/Client/ServerProxy.php(93): Zend_XmlRpc_Client->call('system.multical...', Array)
#5 [internal function]: Zend_XmlRpc_Client_ServerProxy->__call('multicall', Array)
#6 /path/to/xmlrpc.client.php(70): Zend_XmlRpc_Client_ServerProxy->multicall(Array)
#7 {main}
thrown in /usr/share/php/libzend-framework-php/Zend/Http/Client/Adapter/Socket.php on line 512
I increased the timeout to 30 seconds (< - Einen Link: wenn Sie sehen müssen, wie) und ich dann SOMET imes bekommen dies: (wieder warum ???):
Fatal error: Uncaught exception 'Zend_Http_Client_Adapter_Exception' with message 'Read timed out after 30 seconds' in /usr/share/php/libzend-framework-php/Zend/Http/Client/Adapter/Socket.php:512
Stack trace:
#0 /usr/share/php/libzend-framework-php/Zend/Http/Client/Adapter/Socket.php(330): Zend_Http_Client_Adapter_Socket->_checkSocketReadTimeout()
#1 /usr/share/php/libzend-framework-php/Zend/Http/Client.php(989): Zend_Http_Client_Adapter_Socket->read()
#2 /usr/share/php/libzend-framework-php/Zend/XmlRpc/Client.php(280): Zend_Http_Client->request('POST')
#3 /usr/share/php/libzend-framework-php/Zend/XmlRpc/Client.php(361): Zend_XmlRpc_Client->doRequest(Object(Zend_XmlRpc_Request))
#4 /usr/share/php/libzend-framework-php/Zend/XmlRpc/Client/ServerProxy.php(93): Zend_XmlRpc_Client->call('system.multical...', Array)
#5 [internal function]: Zend_XmlRpc_Client_ServerProxy->__call('multicall', Array)
#6 /path/to/xmlrpc.client.php(23): Zend_XmlRpc_Client_ServerProxy->multicall(Array)
#7 in /usr/share/php/libzend-framework-php/Zend/Http/Client/Adapter/Socket.php on line 512
Hier ist, was zurück kommt manchmal (das ist die gewünschte Antwort):
Code: 0 Message: Could not connect to host
Wussten Sie, dass XMLRPC und SOAP unterschiedliche Protokolle sind? –
ja ich weiß, ich wollte nur wissen warum manchmal bekomme ich die Fehlermeldung: Konnte keine Verbindung zum Host herstellen und andere Male bekomme ich den Fehler Fataler Fehler? –