2012-04-04 78 views
0

我有一個問題 - 我有一個文件上傳器,每個用戶都可以上傳max_size:30M。 現在我想從你的經驗中知道我應該在php.ini中設置什麼。PHP上傳文件php.ini配置

這裏是我已經改變了選擇,但我不知道這是最好的:

upload_max_filesize = 30M 

post_max_size = 30M 

max_execution_time = 300 

max_input_time = 300 

memory_limit = 32M 

在這裏,我想memory_limit的是有點低。還有什麼我必須包括? 當我試圖上傳超過30M時,Firefox崩潰。

感謝您的回答。

+0

firefox如何處理您的PHP設置?兩者都運行在完全不同的計算機上。 – hakre 2012-04-04 18:16:46

+0

內存限制必須總是略大於upload_max/post_max大小 - 任何發佈/上傳的數據/文件的空間,以及腳本自身內部數據的空間。 – 2012-04-04 18:17:20

+0

@hakre我知道瀏覽器與php.ini無關..這是另一個需要處理的問題 – 2012-04-04 18:26:17

回答

0

如果你大量使用文件,你應該拆分文件並將其上傳到不同的部分,它不會扼殺服務器,你可以檢查進度,也不需要太多的內存和執行時間。

由於某種原因有人說這不是真的......嗯,我不認爲Youtube或上傳像Megaupload(rip)這樣的網站使用2GB內存和2小時最大執行時間上傳一個用戶的文件,他們如果您需要上傳30MB文件,並且使用標準PHP,您的網絡服務器將會窒息,直到上傳完成,除非您不關心這一點,否則不會推薦它。 最簡單的解決方案是按部件上傳,您可以使用Flash/Silverlight/JS/HTML5或您喜歡的任何方式(客戶端),然後將其加入服務器端。

+0

hm ..我不知道應該怎麼做 - 例如,如果我上傳20M電影...這是一個ajax上傳 - 所以它可以上傳多個文件或一個接一個 - 你的意思是這樣會更好上傳文件一個接一個.... – 2012-04-04 18:25:28

+0

那麼你認爲Youtube可以讓你上傳2GB文件嗎?他們將文件分成較小的塊並逐個上傳塊,然後在服務器端加入它們,它們不使用2gb的RAM內存,也不用2小時的最大腳本執行時間。 爲了做到這一點,你需要以某種方式拆分文件客戶端,這通常使用flash/silverlight/javascript/html5 – gosukiwi 2012-04-04 18:31:51