XMLRPC Zend_Http_Client_Adapter_Exception 'с сообщением' Время ожидания чтения истекло через 10 секунд - PullRequest
3 голосов
/ 30 декабря 2010

Я гуглил везде, но никто не опубликовал решение, все говорят, что нужно установить тайм-аут в конфиге, но как это сделать?

Как мне сбросить / переопределить этот параметр из моего XMLRPCклиент или сервер?

Вот что я пытаюсь:

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

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

Вот ошибка:

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

Попытка передать как аргумент:

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

Вот ошибка:

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

Нашел решение и вот оно:

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

У меня тоже работает одна строка:

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

Ответы [ 3 ]

16 голосов
/ 30 декабря 2010

Документация Zend указывает параметры конфигурации, которые вам разрешено использовать.Я предполагаю, что вы можете просто увеличить время ожидания с 10 секунд до 20 или 30. Все, что подходит для вас.

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

или:

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

ОБНОВЛЕНИЕ - Zend_Http_Client используетсяZend_XmlRpc_Client.Вы можете установить и получить доступ к Zend_Http_Client через объект Zend_XmlRpc_Client.

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

Я не проверял это, поэтому не знаю, будет ли он работать, но вы также можете передать свой собственный объект Zend_Http_Client в Zend_XmlRpc_Clientобъект, используя метод setHttpClient (), как описано (довольно загадочно) внизу страницы документации Zend для Zend_XmlRpc_Client .

1 голос
/ 07 мая 2011

Какой бы клиент вы ни использовали:

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

, где $client может быть клиентом для отдыха или мыла.

Кроме того, один из ответов здесь имеет небольшую ошибку, которая вызывает боль:

client->getHttpClient()->setConfig(array('timeout'=>30')); - remove single quote after 30
0 голосов
/ 24 мая 2018

Эти ответы в порядке, хотя, начиная с Zend HTTP 2.0 (выпущено в 2012 году - см. Diff ) это:

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

...