【问题标题】:php file upload size questionphp文件上传大小问题
【发布时间】:2011-04-08 06:10:55
【问题描述】:

我知道你可以在 PHP 中使用 $_FILES['userfile']['size'] > XXX 控制上传的大小

我想我的问题与性能有关。

当你上传一个文件时,我的理解是整个文件被上传到一个临时位置,然后你就可以访问$_FILES

如果用户尝试上传10gb 文件会怎样? (以超大文件为例)

如果尝试上传大文件,是否会浪费服务器带宽,因为文件需要上传才能进行处理/验证。

我知道 PHP 有类似超时等,但我很好奇用户尝试上传非常大的文件是否会对性能产生影响,即使(例如)最大文件大小为 2mb。

这是一个问题还是不可避免的事情,只是不要担心。

谢谢。

【问题讨论】:

    标签: php file upload filesize


    【解决方案1】:

    apache 和 php 都有 max-post 限制以防止此类行为。

    来自php.ini

    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 4M
    ; Maximum size of POST data that PHP will accept.
    post_max_size = 8M
    

    【讨论】:

    • 抱歉,我可能不太清楚 - 我知道如何防止上传大文件,但对与用户上传超大文件相关的任何性能影响感到好奇
    • edit - 你是说当达到限制时上面会停止上传,或者上传会一直持续到它完成/超时
    • 这些限制将在达到限制后关闭连接套接字。
    • 来自httpd.apache.org/docs/1.3/mod/core.html该指令使服务器管理员可以更好地控制异常的客户端请求行为,这可能有助于避免某些形式的拒绝服务攻击。
    【解决方案2】:

    实际上,[size] 不是用来控制的,它只是上传文件的大小。当您的脚本被启动以检查时,PHP(和网络服务器)已经处理了上传并应用了它们自己的内部限制(Apache 的 LimitRequestBody、PHP 的 upload_max_size 等...)。

    如果通过file_uploadsINI 设置启用所有上传,PHP 将允许继续进行。由于您不能真正信任客户端,因此客户端提供的大小将被忽略,上传将继续进行,直到完成或达到上传限制。所以,是的,它会浪费你的带宽。

    如果您允许上传,则可能会被滥用。但是,上传 10gig 文件或使用 10gig 虚假数据进行 POST 之间没有真正的区别。无论哪种方式,您都会获得 10gig 的数据。

    【讨论】:

    • 感谢您的确认。我不认为这在现实生活中是个大问题,但很高兴知道
    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    相关资源
    最近更新 更多