有关于 Apache 如何处理文件上传的文档吗?

2023-12-23

我花了几个小时在谷歌上搜索以及搜索 Apache 站点,但我找不到任何有关 Apache 如何处理文件上传(尤其是大文件上传)的文档。我读了轶事 http://www.mail-archive.com/php-general@lists.php.net/msg231760.html reports https://stackoverflow.com/questions/1094247/what-happens-during-a-file-upload在上传完成之前 PHP 不会参与,这是我所期望的。但至于 Apache 在上传过程中做了什么,我找不到任何东西。

我热衷于文档的原因是 Apache 将上传完全存储在内存中,而不是将它们流式传输到磁盘。httpd将使用我正在使用的服务器上的每个字节的可用内存,直到它崩溃。通常,消耗的物理内存量是上传文件大小的 3 倍,并以 5 MB/s 左右的速度增加(远低于我的上传速度)。

我已经在我使用的另一个 LAMP 堆栈上测试了相同的请求,并且 Apache 内存使用在整个上传过程中根本没有变化。

谁能向我解释 Apache 如何在两个不同的服务器上以如此不同的方式处理相同的上传?任何想法都非常感激。


从技术上来说,PHPis代表 Apache 处理上传,并将文件缓冲在 RAM 中直至完成。但是,您的脚本只有在上传完成(或中止)后才能获得控制权。除非必要,Apache 本身不会缓冲到磁盘。将其视为一个不可见的“handle_upload()”函数调用,它作为脚本中的第一件事透明地插入。

回到“一切都是 CGI 脚本”的时代,当时像 PHP 这样的语言解释器还没有嵌入到 Web 服务器进程中,POST 数据通过标准输入发送到 CGI 脚本。文件将通过 Apache 直接传递到 CGI 进程,并且可以当它进来时逐字节读取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有关于 Apache 如何处理文件上传的文档吗? 的相关文章

随机推荐