【问题标题】:When uploading a very large file in PHP, how much RAM is required on the server?在 PHP 中上传非常大的文件时,服务器需要多少 RAM?
【发布时间】:2011-05-08 08:42:24
【问题描述】:

我读过http://www.php.net/manual/en/ini.core.php#ini.post-max-size

memory_limit 必须 > post_max_size 。那么如果用户上传一个 500MB 的文件,那么总 RAM 使用了多少?

它使用 >500MB 吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    不,memory_limit 不必大于 post_max_size。

    根据请求的内容类型,PHP 有不同的 POST 阅读器和处理程序。在“multipart/form-data”(用于发送文件)的情况下,rfc1867_post_handler 充当混合阅读器/处理程序。它填充$_POST$_FILES$_POST 中的内容计入内存限制,$_FILES 中的内容也计入内存限制。

    但是,$_FILES 仅包含有关文件的元数据,而不是文件本身。这些只是写入磁盘,因此不计入内存限制。

    【讨论】:

    • “不,memory_limit 不必大于 post_max_size。” 他链接的文档表明它应该是:”一般来说,memory_limit 应该大于 post_max_size。” 到源代码的绝佳链接!
    • 基本上你的意思是,以正常方式发布的文件由该处理程序处理,该处理程序将文件写入磁盘。但是该代码似乎是在 内存缓冲区 中工作的,这表明在处理程序将它们写入磁盘之前,文件数据在内存中(因此可能受到内存限制)。我希望我错了,但这就是对代码的调查似乎是如何阅读的。
    • @t-j-crowder 我不太确定。我的理解是,如果它是一个普通形式的变量,它会全部读入内存。但如果它是一个文件,它会以临时文件的形式写入磁盘。查看Line 903Line 1068
    • 一个文件在交换到磁盘之间缓冲在 phsycail 内存中。
    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 2021-06-01
    • 2012-05-01
    • 1970-01-01
    相关资源
    最近更新 更多