【问题标题】:Php efficiently set read timeout on HTTPS requestsphp 有效地设置 HTTPS 请求的读取超时
【发布时间】:2012-05-19 06:11:57
【问题描述】:

有没有办法在 php 中有效地设置 https 请求的超时时间?

有一个带有 curl 模拟 SOAP 请求的 solution,但是它的速度要慢得多。

针对慢速服务对其进行基准测试显示 SOAP 客户端对同一请求平均需要 6.5 秒而不是 5.5 秒。

还有stream socket的替代品
(由 Zend 框架在 ZendHttpClientAdapterSocket 上实现)但是
stream_set_timeout 函数似乎不适用于 https 连接。

注意问题是读取超时(获得响应的时间)而不是连接超时(进行握手的时间),它适用于 http 和 soap 请求

找到使 curl 更快的解决方案也可以解决问题。

用户故事
我正在使用 zend soap 客户端在外部 https 肥皂网络服务上发出请求。
当网络正常时,该服务通常平均在 5.5 秒内响应。
但是,当出现网络问题时,某些请求最多需要 7 到 8 分钟 消耗服务器资源。

我可以使用 curl 并强制超时,然后在 web 服务出现网络问题时解决我的问题。
但是,当网络正常时,我的平均响应时间会上升到 6.5 秒 业务需求建议应该丢弃超过 30 秒的请求,以确保系统的稳定性。

【问题讨论】:

  • 我不明白:你想设置读取超时但让 curl 更快也可以吗?你的实际问题是什么?
  • Frits,我更新了问题以回答您的评论。谢谢。

标签: php soap curl https timeout


【解决方案1】:

这取决于您使用的不是 cURL。

如果您使用流,则可以使用 stream_set_timeout(设置读写超时)。

您可以在fsockopen 中指定连接超时,或者您可以创建自己的流。


看看是否可以在 SOAP 客户端中指定读写超时?

【讨论】:

  • 你试过这是否适用于 https 吗?我知道它适用于 http。
  • 是的,我有(非常成功)。您的服务器需要启用 mod_ssl,否则 ssl_stream_filter 将不可用,PHP 将抛出错误。在您正在处理的级别上,http 和 https 之间没有区别,它们是可以互换的。
猜你喜欢
  • 2020-03-24
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 2015-03-26
  • 2017-06-20
  • 2013-05-12
  • 2011-04-25
相关资源
最近更新 更多