XMLRPC Zend_Http_Client_Adapter_Exception' with message 'Read timed out after 10 seconds

痞子三分冷 提交于 2019-12-12 09:02:47

问题


I've Googled everywhere but no one has posted a solution, they all say to set the timeout in the config but how do you do this?

How do I reset/override this setting from my XMLRPC client or server?

Here is what I'm trying:

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

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

Here is the error:

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

Trying to pass as arg:

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

Here is the error:

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

Found the solution and here it is:

$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 works for me as well:

$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();

回答1:


Zend documentation specifies the configuration parameters that you are allowed to use. I would guess that you can simply increase the timeout from 10 seconds to 20 or 30. Whatever is appropriate for you.

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

or:

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

UPDATE - Zend_Http_Client is used by Zend_XmlRpc_Client. You can set and access the Zend_Http_Client via the Zend_XmlRpc_Client object.

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

I haven't tested this so I don't know that it will work but you can also pass in your own Zend_Http_Client object to a Zend_XmlRpc_Client object using the setHttpClient() method as described (rather arcanely) at the bottom of the Zend documentation page for Zend_XmlRpc_Client.




回答2:


Whatever client you're using:

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

where $client could be a Rest or Soap Client.

Also, one of the answers here has a minor error that causes pain:

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



回答3:


Those answers are alright, though since Zend HTTP 2.0 (released in 2012 - see diff) it is :

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



来源:https://stackoverflow.com/questions/4563680/xmlrpc-zend-http-client-adapter-exception-with-message-read-timed-out-after-10

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!