2010-12-30 3 views
3

Я googled везде, но никто не опубликовал решение, все говорят, чтобы установить тайм-аут в конфиге, но как вы это делаете?XMLRPC Zend_Http_Client_Adapter_Exception 'с сообщением' Время чтения после 10 секунд

Как сбросить/отменить этот параметр с моего клиента или сервера 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(); 

One Line работает для меня, как хорошо:

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

ответ

15

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

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

или:

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

UPDATE - 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(), как описано (а arcanely) в нижней части Zend documentation page for Zend_XmlRpc_Client.

+0

Я расчесывание документов для этого, спасибо большого времени !!!! –

+0

Хмм думаю, я прыгнул с пистолета. Обновленный вопрос –

+0

Ищете клиента XMLRPC, а не HTTP-клиент –

1

Независимо от клиента вы используете:

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

где $client может быть клиент Rest или мыло.

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

client->getHttpClient()->setConfig(array('timeout'=>30')); - remove single quote after 30 
Смежные вопросы