使用PHP处理文件上传时是否将数据加载到内存中?

时间:2013-12-16 13:55:42

标签: php

在PHP中使用无处不在的文件上传范例时,例如:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

文件本身是否已加载到内存中,或者是用作文件引用的$ _FILES全局文件?

如果文件没有加载到内存中,那么PHP文档中关于文件上传陷阱的这一行的目的是什么:

如果启用了内存限制,则可能需要更大的memory_limit。确保将memory_limit设置得足够大。

http://www.php.net/manual/en/features.file-upload.common-pitfalls.php

2 个答案:

答案 0 :(得分:1)

不,它没有加载到内存中 - 这将是一个真正的悲观。您可以通过阅读$_FILES["file"]["tmp_name"]

,以您选择的方式将内容加载到内存中

答案 1 :(得分:1)

不,文件上传本身由Web服务器处理。当然,Web服务器需要为上传保留一些内存,但它只能与读/写缓冲区大小一样多。猜有点像4096字节。

上传文件后,网络服务器将上传文件的临时名称和其他一些信息填充到php和php,使这些信息在$_FILES中可用,但它不会有上传的文件在内存中。