以编程方式发出HTTP POST请求时,哪些超时值是明智的?

就我而言,我希望在PHP中发出POST请求时设置'合理'超时值,但这适用于任何语言。

我需要能够发出一组请求,每个请求都是用户指定的URL。如果我确实需要连续处理请求而不是同时处理请求,我想指定一个合理的时间,超过该时间,请求被认为已经超时。

PHP 默认套接字超时为60秒。在决定请求不会完成之前,这似乎是一个不必要的等待时间。

因为这些是POST请求,所以它们应该快速完成 - 没有像GET请求那样检索和返回数据。

我们应该能够假设大部分时间,在X秒内未能对请求发出响应意味着主机不太可能在合理的时间内为值发出响应X 显着小于60。

当然,主机很少需要超过60秒才能响应简单的POST请求。他们甚至很少超过10秒? 5秒钟?

X在实践中可能有什么明智的价值?伴随建议的理由将是非常有益的。

有帮助吗?

解决方案

我建议设置一个测试,因为有太多的因素需要提供一个永远合理的值。

POST请求发送要处理的数据。处理需要多长时间?这将是应用程序/数据特定的。

主持人在哪里?用户正在提供URL,因此将是未知的。我们无法知道您的应用程序与主机之间的流量。我们无法知道主机的服务器负载。

基本上,没有普遍合理的超时。您必须根据自己的特定需求使用自己的最佳判断。设置测试并使用它来确定您的限制。

其他提示

大多数库都有连接超时和读取超时。也就是说,尝试连接到远程服务器和发送请求后的超时之间的超时,它们应该等待响应。

如果这是本地Web服务,如果您的库支持,我会将连接超时设置为低,1秒或更短。如果您连接的远程服务不可用恕我直言,最好立即向用户返回响应,而不是允许所有工作线程阻止该远程服务,从而导致其他上游错误。

至于读取超时,这是比较棘手的,你需要它是低的,所以你不要耗尽等待远程服务返回的工作池,但你也不希望它如此之低它在读取响应之前关闭连接。这是您必须测试的内容,然后在系统投入生产时作为指标进行跟踪。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top