2010-09-04 119 views
4

我知道你可以使用$_FILES['userfile']['size'] > XXXPHP文件上傳大小問題

我的問題控制上傳的PHP大小我想是性能相關的。

當您上傳文件時,我的理解是整個文件被上傳到一個臨時位置,然後您可以訪問$_FILES

如果用戶試圖上傳10gb文件,會發生什麼? (作爲一個非常大的文件的例子)

如果試圖上傳一個大文件,這是否浪費了服務器帶寬,因爲文件需要上傳才能被處理/驗證。

我知道PHP有像超時等,但我很好奇,如果有用戶試圖上傳非常大的文件,即使(例如)最大文件大小爲2mb的性能影響。

這是一個擔心或不可避免的事情,只是爲了不用擔心。

謝謝。

+0

+1非常好的問題 – 2012-04-12 18:56:14

回答

3

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 
+0

對不起,也許我不是很清楚 - 知道如何防止大文件上傳,但很好奇任何與用戶上傳超大文件相關的性能影響 – calum 2010-09-04 15:46:37

+0

編輯 - 你是說當達到限制時,上述操作將停止上傳,或者上傳將繼續進行直到完成/超時,無論 – calum 2010-09-04 15:48:38

+0

這些限制將在達到限制後關閉連接套接字。 – aularon 2010-09-04 15:48:41

0

其實,[size]是不是有控制的,它只是上傳文件的大小。當你的腳本開始檢查時,PHP(和網絡服務器)已經處理了上傳並應用了他們自己的內部限制(Apache的LimitRequestBody,PHP的upload_max_size等)。

如果已通過file_uploads INI設置啓用了PHP,則允許所有上傳繼續進行。由於您無法真正信任客戶端,客戶端提供的大小將被忽略,上傳將繼續進行,直至完成或達到上傳限制。所以,是的,它可能會浪費你的帶寬。

如果您允許上傳,則可能會被濫用。但是,上傳一個10gig文件或某人在做一個POST和10gig僞造數據之間並沒有真正的區別。無論哪種方式,你都有10gig的數據。

+0

感謝您的確認。我不認爲它是現實生活中的一個大問題,但很高興知道 – calum 2010-09-04 15:50:17