有没有办法在php中有效设置 https 请求的超时?
有solution curl模拟SOAP请求,但速度要慢得多。
针对慢速服务对其进行基准测试,显示平均为6.5秒,而不是SOAP客户端为同一请求采用的5.5秒。
还有stream socket的替代方案 (由Zend Framework在ZendHttpClientAdapterSocket上实现)但是 stream_set_timeout函数似乎不适用于https连接。
请注意,问题是读取超时(获得响应的时间),而不是对http和soap请求都有效的连接超时(握手时间)
找到使卷曲更快的解决方案也可以解决问题。
用户故事
我正在使用zend soap客户端在外部https soap webservice上发出请求
当网络正常时,该服务通常在5.5秒内响应
但是,当存在网络问题时,某些请求最多需要7到8分钟
消耗服务器资源。
我可以使用curl并强制超时,然后在网络服务出现网络问题时解决我的问题。
但是,当网络正常时,我的平均响应时间可达6.5秒
业务要求建议应该删除超过30秒的请求,以确保系统的稳定性。
答案 0 :(得分:1)
这取决于您使用的除了cURL之外的其他内容。
如果您正在使用流,则可以使用stream_set_timeout
(设置读写超时)。
您可以在fsockopen
中指定的连接超时,或者您可以创建流。
看看您是否可以在SOAP客户端中指定读写超时?