无论设置是不是正确,大文件上传时的 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 连接重置的主要内容,如果未能解决你的问题,请参考以下文章

PHP上传大文件解决办法

大文件上传失败的php

qxx项目大文件上传

js 大文件分片上传处理如何实现?

js+php大文件分片上传

截取部分字符串中的内容(可做文件上传时的文件重命名)