无论设置是不是正确,大文件上传时的 PHP 连接重置
Posted
技术标签:
【中文标题】无论设置是不是正确,大文件上传时的 PHP 连接重置【英文标题】:PHP Connection Reset on Large File Upload Regardless Correct Setting无论设置是否正确,大文件上传时的 PHP 连接重置 【发布时间】:2011-11-26 07:38:54 【问题描述】:我遇到了一个非常常见的问题,似乎找到的所有可用解决方案都不起作用。
我们有一个正在接收大量流量的 LAMP 服务器。使用此服务器,我们执行定期文件提交上传。在小文件上传时,它可以完美运行。在大约 4-5MB 的文件上,此提交上传会间歇性地失败(有时它可以工作,但很多时候它失败了)。
我们的 php 有以下配置:
max_input_time: 600
max_execution_time: 600
max_upload_size: 10M
post_max_size: 10M
Apache 设置:
Timeout: 600
Keep-Alive Timeout: 15
Keep-Alive: On
Per Child: 1000
Max Conn: 100
因此,我想知道是否有人可以帮助我解决这个问题。我们在网上找到了问题和解决方案,但在我们的案例中都没有。
非常感谢。非常感谢任何输入/反馈!
【问题讨论】:
$_FILES 数组应该告诉你错误。 @Dagon 不幸的是,我们甚至无法生成 $_FILES,因为在上传过程中,会显示连接重置错误。 如果您使用的是 php-fpm,请在/etc/php5/fpm/php.ini
内更改 upload_max_filesize = 10M
( NOT max_upload_size: 10M
)(不是 /etc/php5/cli/php.ini
)。如果您正在运行 nginx,请在 http 部分添加 client_max_body_size 200M;
/etc/nginx/nginx.conf
【参考方案1】:
连接可能会在几个地方终止:
-
阿帕奇
php.ini 中的帖子大小限制
php.ini 中的内存限制
在 php.ini 中输入时间限制
php.ini 或set_time_limit() 内的执行时间限制
我会增加所有这些,看看它是否仍然存在。但是你必须反弹 apache 才能使 php.ini 中的更改生效。
这些还受到最终用户的连接速度的影响,如果某些用户连接失败,那是因为他们的连接速度比其他用户慢,并且他们与服务器的连接正在终止。
【讨论】:
以上是关于无论设置是不是正确,大文件上传时的 PHP 连接重置的主要内容,如果未能解决你的问题,请参考以下文章