【发布时间】:2010-10-09 08:32:57
【问题描述】:
嗨,我对 PHP 很陌生,我创建了一个表单,用于将非常大的 csv 文件上传到我的服务器。有人向我提到,由于上传文件太大,浏览器会超时,这是真的吗?如果可以,是否可以预防?
感谢您的帮助!
【问题讨论】:
嗨,我对 PHP 很陌生,我创建了一个表单,用于将非常大的 csv 文件上传到我的服务器。有人向我提到,由于上传文件太大,浏览器会超时,这是真的吗?如果可以,是否可以预防?
感谢您的帮助!
【问题讨论】:
【讨论】:
max_input_time似乎对这个问题没有影响。
MAX_INPUT_TIME后,问题得到解决。
如果它们的值太小,一些配置指令可能会导致大型上传失败:
PHP
max_input_time 允许脚本解析输入数据(例如 POST、GET 和文件上传)的最长时间(以秒为单位)upload_max_filesize 上传文件的最大大小。post_max_size 允许的帖子数据大小上限。阿帕奇
TimeOut 服务器在请求失败前等待特定事件的时间LimitRequestBody 限制从客户端发送的 HTTP 请求正文的总大小可能还有更多。
【讨论】:
解决 php 中对大文件上传处理不佳的问题的一个好方法是使用像 JUpload 这样的上传器,它会在发送文件之前将文件分成块。这对您的用户也有好处,即他们在上传时获得适当的进度反馈,并且他们可以一次上传多个文件。
【讨论】:
我能够使用以下设置解决此问题,您可以使用不同的值,但您明白了:
对于我的服务器,我将这些行放在脚本目录内的“.user.ini”文件中,如果您在服务器上执行 phpinfo('user_ini.filename'),您的服务器可能会寻找不同的文件将吐出您需要将值放入的文件
max_execution_time = 1800
max_input_time = -1
post_max_size = 100M
upload_max_filesize = 100M
memory_limit = 256M
【讨论】:
上传非常大的文件时,您必须更改 4 个配置变量:
upload_max_filesizepost_max_sizememory_limittime_limit可以在运行时使用 set_time_limit() 增加时间限制。
【讨论】:
默认情况下,允许脚本运行大约 30 秒。您可以使用set_time_limit() function 来更改它。此外,如果您的用户需要上传大文件,您需要更改 php.ini 文件中的 post_max_size 和/或 upload_max_filesize 值。
另外,如果您只想全局扩展超时限制,您可以在 php.ini 中更改 max-execution-time。
【讨论】:
是的,这是真的。文件上传是通过 POST 请求完成的,并且请求通常会超时。您应该能够重新配置您的环境以获得更长的请求超时时间。
【讨论】:
不仅仅是超时会导致问题。可以上传的文件的最大大小有一些限制。这些限制可以在 php.ini 文件中更改:
post_max_size
上传最大文件大小
内存限制
查看http://uk.php.net/ini.core了解详情。
【讨论】:
我的回答与您最初的问题没有直接关系,但如果您的 PHP 脚本前面有反向代理负载均衡器,负载均衡器可能会超时或阻止大量上传。如果您支持文件上传,请务必检查负载均衡器的配置。就像 PHP 一样,大多数负载均衡器的默认上传设置都很小。
【讨论】:
如果更改上述任何参数似乎没有任何区别,则可能是某处的 html 表单包含名称 MAX_FILE_SIZE 作为隐藏字段。
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
在上面的示例中,任何超过 10MB 的文件都不会上传。
【讨论】: