我在我的Web应用程序中使用Apache HTTPD 2.4以及它的httpd.conf
文件,以确保所需的请求处理。 我已经定义了一些代理规则来将请求重定向到适当的后端端点,除了超时配置外,一切正常。
我想为带有标头的请求定义不同的超时,为带有正文的请求定义不同的超时,以区分POST
和GET
方法的处理时间。 由于全局Timeout
属性不适合我的需求(某些文件上传功能需要长达 5 分钟的请求处理,而简单GETs
长达几秒钟,因此我想更改看起来不好的全局超时值:Timeout=300
。
我以为我在 Apache 模块 mod_reqtimeout 中找到了解决方案 - 所以我使用 CentOS 在我的前端的 Docker 映像上加载了上述模块LoadModule reqtimeout_module modules/mod_reqtimeout.so
并成功检查了它的状态apachectl -M
. 最后,我定义了RequestReadTimeout header=10 body=30
并注释掉了全局超时参数以测试新方法,但看起来配置使用默认的 60 秒全局超时参数。
如何强制 Apache 使用新的超时规则? 为了测试它,我创建了两个简单的端点:带有标头的 GET 和带有正文的 POST 以使用 Postman 进行测试,它们都在给定的时间内使用 Java 的 Thread.sleep。
我不知道它是否会以您喜欢的方式解决您的问题,但是您可以使用以下命令:
set_time_limit(0);
在您的.php文件中调用 5 分钟 POST,它对请求没有限制