PHP SoapClient 超时
无论如何,SoapClient 请求是否会超时并引发异常。截至目前,我得到 PHP 服务器响应超时,在我的例子中是 60 秒。基本上我想要的是,如果在一定时间内没有来自 Web 服务的任何回复,则会抛出异常,我可以捕获它。 60秒警告不是我想要的。
Is there anyway for a SoapClient Request to time out and throw an exception. As of now, I get PHP Server response timeout, in my case 60 seconds. Basically what I want is, if there isn't any reply from the Web Service within certain time, an exception would be thrown and I could catch it. The 60 seconds warning is not what I want.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
无效答案。请参阅 https://stackoverflow.com/a/12119215/441739。
Invalid answer. Please see https://stackoverflow.com/a/12119215/441739 instead.
查看
如果您感觉舒服并且您的环境允许您延长课程)。
它基本上扩展了SoapClient类,用可以处理超时的curl替换了HTTP传输:
Have a look at
if you are comfortable and your environment allows you to extend classes.
It basically extends the
SoapClient
class, replaces the HTTP transport with curl which can handle the timeouts:接受的答案将破坏 SoapClient 必须提供的所有功能。比如设置正确的内容标题、身份验证等。
这将是问题的更好解决方案
The accepted answer will break all functionalities that SoapClient has to offer. Like setting the correct content headers, authentication etc.
This would be a better solution to the problem
您还可以使用 stream_context_create() 并添加 <
http
数组的 code>timeout 选项:这是 PHP 手册页
SoapHandler 初始化应该是:
You could also use stream_context_create() and add the
timeout
option to thehttp
array:Here is the PHP manual page
The SoapHandler initialization then should be:
您可以通过 Composer 安装它:
https://github.com/ideaconnect/idct-soap-client
它扩展了标准 SoapClient 并提供设置重试次数、连接和读取超时的选项。
You can install this through composer:
https://github.com/ideaconnect/idct-soap-client
It extends the standard SoapClient and gives options to set the amount of retries, connection and read timeouts.
我在使用 SOAPClient 时使用以下逻辑:
这有助于我等待最多 10 秒的连接建立时间和 60 秒的调用执行时间。
I am using the following logic when working with SOAPClient:
This helps me to wait up to 10 seconds for connection establishment, and 60 seconds for the call execution.