Dan*_* W. 5 php soap timeout zend-framework stream
我正在使用以下方法尝试设置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)
)
)));
}
Run Code Online (Sandbox Code Playgroud)
2.我尝试作为构造函数的一部分,就像在这个使用object的答案(PHP SoapClient Timeout)中一样SoapClient:
$this->_soap = new \Zend_Soap_Client($this->_wsdl, array(
'soap_version' => SOAP_1_1,
'connection_timeout' => intval($timeout)
));
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为Zend不支持这个选项并抛出Unknown SOAP client option.
3.我尝试default_socket_timeout:
ini_set("default_socket_timeout", intval($timeout));
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效:
API calls times (seconds): min 0.3012 max 23.0334 avg 2.5005
Run Code Online (Sandbox Code Playgroud)
我现在可以尝试的是,public function setOptions($options)在超时后附加到"\ Zend\Soap\Client.php"中,但我不想触及Zend核心文件.
我怀疑动态设置选项timeout是否可行。
不过,你能尝试一下这个方法吗?
$this->_soap->setSoapClient(
new SoapClient(
$this->_wsdl,
array(
'soap_version' => SOAP_1_1,
'connection_timeout' => intval($timeout)
)
)
);
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。谢谢
| 归档时间: |
|
| 查看次数: |
2611 次 |
| 最近记录: |