1

当前面有 nginx 作为网络服务器时,PHP 设置 max_input_time 是否相关?

整个故事:

以访问者正在上传文件为例。nginx 网络服务器,监听 80 端口,将首先获取请求。

Nginx 本身有一个 client_header_timeout 设置,这不应该是相关的,因为文件上传是在请求正文中处理的。client_body_timeout 是最大时间量,客户端可以发送这个请求体,包含文件和其他一些 POST 数据。这个数据的大小可以通过client_max_body_size来限制,对吧?

PHP 现在等待数据。此时间受 max_input_time 限制。当它拥有所有数据时,它会检查请求主体是否超过其 post_max_size 限制,对其进行解析并检查文件是否超过 upload_max_filesize 限制。现在将执行 php 脚本,其时间不应超过 max_execution_time。

但是我的 fastcgi-proxy 什么时候加载?是在加载请求标头之后,在加载请求主体之后还是何时触发?

或者......换一种方式提出这个问题:当我使用 PHP-FPM 运行 PHP 并由 nginx 网络服务器支持时,PHP 配置 max_input_time 是否相关?当访问者带宽不好但想上传大文件时,我是否必须增加这个值,或者增加client_body_timeout的nginx设置是否足够?

如果假设不正确,请纠正我!

4

1 回答 1

1

只是给出一个答案,这对我来说很方便:

我尝试上传一个 18MB 的文件,我在 50 秒内得到了它。fastcgi-proxy 被限制为 10 秒。所以,对我来说,似乎 nginx 在将整个请求发送到 fastcgi-proxy 之前缓存了整个请求。

所以,简而言之:不。在我的情况下,我不需要超过 max_input_time。

这可能因配置而异。最好有人知道代码并知道这取决于哪些选项。

在 IRC 上,没有人能真正告诉我,当 nginx 将数据发送到 fastcgi-proxy 时......

编辑:

只是想添加另一个资源,这证实了我的建议:

不幸的是,PHP 仅在上传完成后才获取数据,并且 [...]

请参阅会话上传进度是否适用于 nginx 和 php-fpm?

于 2013-04-24T08:32:55.453 回答