2013-12-16 41 views
1

當在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

回答

1

不,它沒有加載到內存 - 這將是一個真正的pessimization。您可以通過閱讀$_FILES["file"]["tmp_name"]以您選擇的方式將內容加載到內存中。

1

不,文件上傳本身是由網絡服務器處理的。當然,Web服務器需要爲上傳保留一些內存,但它只是讀/寫緩衝區大小的一部分。猜測有點像4096字節。

上傳文件後,Web服務器將上傳文件的臨時名稱和其他一些關於它的信息填充到php和php中,這些信息在$_FILES中可用,但它不會有上傳的文件在記憶中。

+0

你能指出任何詳細描述這個的文檔嗎?我一直在尋找php.net,並沒有能夠真正得到一個很好的詳細描述實際正在發生的事情。 – user602525

+0

雖然你可以信任我,但我會尋找更多的文檔 – hek2mgl

+0

我自己的直覺說它沒有加載到內存中,但如果你檢查我的編輯 - 粗體文本 - 讓我想知道。 – user602525

相關問題