PHP文件上传 - CGI上的内存处理

时间:2011-02-22 11:03:20

标签: php apache memory upload cgi

我想知道PHP如何处理文件上传。我read文件上传将按块分割,并在上传完成后汇编。有没有验证这个事实?这有助于理解文件上载的处理和设置。 mod_php或CGI的处理是否相同? mod_php与Apache更紧密地联系在一起。 CGI必须阅读一个流然后才能做到这一点。

此过程中的内存如何。

这是对的吗?

  1. Apache处理HTTP request
  2. Apache通过CGI调用PHP并传输数据(管道)
  3. PHP以一定大小的块分割输入以达不到内存限制
  4. 找到了流结束
  5. PHP将拆分文件组装成一个文件,并删除拆分文件
  6. 有关文件上传的信息将保存到$ _FILES

1 个答案:

答案 0 :(得分:1)

PHP确实以块的形式读取文件,但它不会将它们写入单个文件然后重新组合它们,它会将它们写入同一个临时文件,这是你在$ _FILES中获得的文件。

mod_php和CGI也一样。

这是负责任的代码:http://svn.php.net/viewvc/php/php-src/branches/PHP_5_3/main/rfc1867.c?revision=307583&view=markup#l1065