2010-12-30 9 views
3

Ich habe überall gegooglet, aber niemand hat eine Lösung gepostet, sie sagen alle, um das Timeout in der Config zu setzen, aber wie machst du das?XMLRPC Zend_Http_Client_Adapter_Exception 'mit Nachricht' Lesezeit abgelaufen nach 10 Sekunden

Wie setze ich diese Einstellung von meinem XMLRPC-Client oder -Server zurück? Hier

ist, was ich versuche:

$server = new Zend_XmlRpc_Client('http://127.0.0.1/xmlrpc'); 
$client = $server->getProxy(); 

// Increasing the timeout 
$client->setConfig(array('timeout'=>30)); 

Hier ist der Fehler:

Fatal error: Uncaught exception 'Zend_XmlRpc_Client_FaultException' 
with message 'Method "setConfig" does not exist' 
in /usr/share/php/libzend-framework-php/Zend/XmlRpc/Client.php:370 

Der Versuch, wie arg weitergeben müssen:

$server = new Zend_XmlRpc_Client('http://127.0.0.1/xmlrpc', array('timeout'=>30)); 

Hier ist der Fehler:

Catchable fatal error: Argument 2 passed to 
Zend_XmlRpc_Client::__construct() must be an 
instance of Zend_Http_Client 

die Lösung gefunden und hier ist sie:

$server = new Zend_XmlRpc_Client('http://127.0.0.1/xmlrpc'); 

// Get the HTTP Client used by the XMLRPC client 
$http_client = $server->getHttpClient(); 

// Increasing the HTTP timeout 
$http_client->setConfig(array('timeout'=>30)); 

$client = $server->getProxy(); 

One Line funktioniert für mich auch:

$server = new Zend_XmlRpc_Client('http://127.0.0.1/xmlrpc'); 

// Get the HTTP Client used by the XMLRPC client and increasing the HTTP timeout 
$server->getHttpClient()->setConfig(array('timeout'=>30)); 

$client = $server->getProxy(); 

Antwort

15

Zend documentation gibt die Konfigurationsparameter, die Sie verwenden dürfen. Ich nehme an, dass Sie das Timeout einfach von 10 Sekunden auf 20 oder 30 erhöhen können. Was auch immer für Sie geeignet ist.

$client = new Zend_Http_Client('http://example.org', array('timeout' => 30)); 

oder:

$client->setConfig(array('timeout'=>30)); 

UPDATE - Zend_Http_Client wird von Zend_XmlRpc_Client verwendet. Du kannst den Zend_Http_Client über das Zend_XmlRpc_Client Objekt setzen und darauf zugreifen.

$xmlrpc_client = new Zend_XmlRpc_Client('http://127.0.0.1/xmlrpc'); 
$xmlrpc_client->getHttpClient()->setConfig(array('timeout'=>30')); 

Ich habe nicht getestet, so weiß ich nicht, dass es funktioniert, aber Sie können auch in Ihrem eigenen Zend_Http_Client Objekt zu einem Zend_XmlRpc_Client Objekt mit der Methode setHttpClient() -Methode, wie beschrieben (eher arcanely) passieren bei der Boden des Zend documentation page for Zend_XmlRpc_Client.

+0

Ich habe die Dokumentation für diese Kämme, Danke große Zeit !!!! –

+0

Hmm, denke ich sprang die Waffe. Aktualisierte Frage –

+0

Auf der Suche nach XMLRPC-Client nicht der HTTP-Client –

1

Was auch immer Client Sie verwenden:

$client->getHttpClient()->setConfig(array('timeout'=>30)); 

wo $client eine Erholung oder Soap-Client sein könnte. Auch

, eine der Antworten hier hat einen kleinen Fehler, die Schmerzen verursacht:

client->getHttpClient()->setConfig(array('timeout'=>30')); - remove single quote after 30