【发布时间】:2014-07-09 19:24:30
【问题描述】:
我正在使用以下方法尝试为 SoapClient 设置超时。 $this->_soap 是一个 Zend_Soap_Client,它包装了一个 SoapClient 对象。
有时我正在执行的 API 调用需要超过 60 秒。我正在尝试设置 10 秒超时,但这不起作用。
1.使用stream_context_create:
public function setTimeout($timeout)
{
$this->_soap->setStreamContext(stream_context_create(array(
'http' => array(
'timeout' => intval($timeout)
)
)));
}
2.我尝试作为构造函数的一部分,就像在使用 SoapClient 对象的这个答案 (PHP SoapClient Timeout) 中一样:
$this->_soap = new \Zend_Soap_Client($this->_wsdl, array(
'soap_version' => SOAP_1_1,
'connection_timeout' => intval($timeout)
));
但它不起作用,因为 Zend 不支持此选项并抛出 Unknown SOAP client option。
3.我试过default_socket_timeout:
ini_set("default_socket_timeout", intval($timeout));
这些都不起作用:
API calls times (seconds): min 0.3012 max 23.0334 avg 2.5005
我现在可以尝试的是,将超时附加到“\Zend\Soap\Client.php”中的public function setOptions($options),但我不想触及 Zend 核心文件..
【问题讨论】:
标签: php zend-framework soap stream timeout