是否PHP设置max_input_time相关,当有nginx作为web服务器在前面?
整个故事:
以访客上传文件为例。nginx的web服务器,监听端口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配置max_input_time相关的,当我有PHP运行使用PHP- fpm,由nginx web服务器支持的PHP ?当访问者带宽不好但想要上传一个大文件时,我是否必须增加这个值,或者增加nginx设置client_body_timeout是否足够?
如果假设不正确请纠正我!
只是给一个答案,这对我来说很方便:
我试着上传一个18MB的文件,我在50秒内就完成了。fastcgi-proxy限制为10秒。处理步骤所以,对我来说,似乎nginx在将其发送到fastcgi-proxy之前缓存了整个请求。
所以,简而言之:No。我不需要超过max_input_time
这可能因配置而异。如果有人知道代码,并且知道这取决于哪些选项,那就太好了。
在IRC上,没有人能真正告诉我,当nginx发送数据到fastcgi-proxy…
编辑:只是想添加另一个资源,这证实了我的建议:
不幸的是PHP只有在上传完成后才能获取数据[…]
请参阅在nginx和php-fpm中会话上传进度是否工作?