max_input_time是否影响了PHP文件上传?

hyp*_*not 31 php

我正在研究为PHP设置默认值的最佳值.我看到了许多矛盾的观点max_input_time.

这个答案说,他认为文件上传不计入计时器:https: //stackoverflow.com/a/3758522/518169

在官方PHP文档中,有一个巨大的红色警告说:

max_input_time设置允许脚本接收输入的最长时间(以秒为单位); 这包括文件上传.对于大型或多个文件或较慢连接的用户,可能会超出默认值60秒

来源:http://php.net/manual/en/features.file-upload.common-pitfalls.php,最后更新时间:2012年7月6日星期五

因此,它似乎max_input_time 确实影响文件上传,并确保访问者可以上传说20 MB文件,即使从慢速或移动连接,默认值60绝对不够!

您建议将此值设置为什么?300?

另外,max_execution_time和之间有什么关系max_input_time吗?例如,那max_execution_time需要大于max_input_time

小智 21

经过一些快速的基准测试后,我认为max_input_time对连接速度较慢的用户处理大量上传没有任何影响.

来自http://us3.php.net/manual/en/info.configuration.php#ini.max-input-time

这将设置允许脚本解析输入数据的最长时间(以秒为单位),如POST和GET.它是从接收服务器上的所有数据到脚本执行开始的时刻开始计算的.

我正在使用PHP 5.3.8并使用以下.htaccess配置

php_value max_input_time 5
php_value max_execution_time 1
php_value upload_max_filesize "2048M"
php_value post_max_size "2048M"
Run Code Online (Sandbox Code Playgroud)

我的测试脚本是:

<?php
if (!empty($_FILES)) {
    echo '<pre>';
    var_dump($_FILES);
    echo '</pre>';
}
?>
<form enctype="multipart/form-data" method="POST">
    File: <input name="userfile" type="file" />
    <input type="submit" value="Upload" />
</form>
Run Code Online (Sandbox Code Playgroud)

通过多次试验,我的1.5G文件上传大约需要16-17秒,处理需要4-5秒,执行时间基本上为0.

随着max_input_time 5脚本完成.它设置为4我们得到PHP Fatal error: Maximum execution time of 4 seconds exceeded in Unknown on line 0, referer: http://localhost/test-upload.php

它似乎max_execution_time没有任何影响,因为我们在整个测试中将它保持在1.

  • 只是想说,这个答案是不正确的.在极少数情况下,连接速度慢会导致管道出现故障.我今天刚修好了,它将max_input_time设置为600.我现在谷歌搜索如何计算max_input_time,但只看到错误的答案. (6认同)

Jar*_*kia 7

我对max_input_time进行了广泛的研究.网络传输时间不是一个因素.PHP作为Apache处理程序(mod_php)或Nginx/PHP-FPM -pair产生了类似的结果:PHP在传输完成后获取上传的文件,Web服务器将数据交给.在我的测试中,2秒max_input_time足以处理800 MiB上传.

所有细节都在http://blog.hqcodeshop.fi/archives/185-PHP-large-file-uploads.html


sym*_*ean 6

它将取决于PHP如何桥接到Web服务器.

从技术上讲,网络服务器有可能在它有请求标头时立即调用PHP - 在这种情况下,PHP会笨拙地等待POST数据通过互联网,直到它可以填充请求变量(这很可能)将超过max_input_time).但更常见的是,Web服务器会延迟PHP的调用,直到它有完整的请求(不太可能超过max_input_time).

  • 关注此主题的任何进一步阅读?这是我第一次声称在请求开始时调用PHP处理因此影响了"max_input_time".谢谢. (2认同)