【问题标题】:Large php file upload大型php文件上传
【发布时间】:2013-02-05 18:21:02
【问题描述】:

大家好。

所以...我有一个网站需要上传文件,比如 500MB 大。

我的问题是……我需要什么样的系统要求?特别是关于记忆。要上传 500MB 的文件,我需要 500MB 内存吗?一次上传成功需要多少内存?

【问题讨论】:

标签: php upload ram


【解决方案1】:

PHP,或者更好的 Web 服务器,不会在 RAM 中缓冲整个上传。

上传大小不直接取决于 RAM 大小。我不能说你的系统到底应该是什么样子,但我可以说我几年前用低成本工作站处理了 GB 大小的更新。

请注意,如果您想支持大上传,则必须更改以下 php.ini 设置:

upload_max_filesize = '500M';

post_max_size = '500M';

再次关于内存:注意不是PHP会消耗内存。 Web 服务器将处理下载。在 PHP 中你不用担心这个。

如果你使用的是 Linux 系统,你可以在键入时查看 tcp 缓冲区大小

cat /proc/sys/net/ipv4/tcp_rmem

在终端中。你会看到 3 个数字。以字节为单位的最小、中等和最大缓冲区大小。在我的系统上是:

4096    87380   4115680

意味着最大缓冲区大小约为 3.9MB,明显小于您拥有的 500MB。

所以在这种情况下不用担心内存。网络很可能是瓶颈。

【讨论】:

  • 我怀疑...您是否知道一次将缓冲多少 RAM?
  • 是的。我知道upload_max_fielsize 和post_max_size,现在我需要了解内存使用情况。我应该担心耗尽 128MB RAM 吗?
  • 我会假设实际使用的内存量会非常低。服务器可能会将该文件作为流读入并直接写入 tmp 文件,然后您可以使用您选择的语言将该文件复制到正确的位置。
  • 我不确定如何测试这个...另外我没有直接访问服务器的权限。
  • 在您的开发盒上,将您的 Web 服务器可以使用的最大内存设置为 128MB 并进行测试。如果您愿意,您可以创建一个与您的生产环境相匹配的 VM。
猜你喜欢
  • 2012-07-20
  • 1970-01-01
  • 2013-12-01
  • 2016-10-25
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多