檔案上傳 - php上傳大檔案(100M以上)

來源:互聯網
上載者:User
php如何上傳大檔案,配置裡好像最大設定成8M,我想知道對於一個幾百M的檔案如何上傳(不使用專門的用戶端軟體),好像是要分區什麼的,有知道具體如何做的嗎

回複內容:

php如何上傳大檔案,配置裡好像最大設定成8M,我想知道對於一個幾百M的檔案如何上傳(不使用專門的用戶端軟體),好像是要分區什麼的,有知道具體如何做的嗎

伺服器端Apache/Nginx是支援斷點續傳的,用戶端cURL也是支援斷點續傳的.
瀏覽器預設支援下載斷點續傳,可以用jQuery-File-Upload實現分塊上傳和斷點續傳,伺服器則用PHP實現接收.
https://github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads#resuming-file-uploads
https://github.com/blueimp/jQuery-File-Upload/blob/master/server/php/UploadHandler.php
為了避免大檔案上傳阻塞PHP服務,可以單獨開一個用於上傳的PHP-FPM進程池,利用PHP-FPM提供的池的隔離性,分離計算密集和I/O密集(上傳)操作,可以減少阻塞對整個PHP應用的影響.

後續補充說明:

info.php                    PHP檔案上傳測試                            

Nginx和PHP-FPM的背景工作處理序都只開1個.
以2KB每秒上傳圖片:

time trickle -s -u 2 curl \-F "action=info.php" \-F "upload_file=@linux.jpeg;type=image/jpeg" \-F "submit=提交" \http://www.example.com/app/info.phpsudo netstat -antp|egrep "curl|nginx|fpm"

發現只有nginx和curl處於ESTABLISHED狀態,nginx和fpm都沒有被阻塞.

top -p 4075 可見Nginx單線程.sudo strace -p 4075 可見Nginx調用recvfrom接收資料並且pwrite儲存資料.sudo strace -p 13751 可見PHP-FPM是在Nginx接收完成使用者上傳的資料時才擷取資料.

既然如此,我上面設想的另開FPM進程池處理上傳操作的用處就不是太大了.在檔案上傳過程中PHP-FPM並不會被阻塞,因為Nginx接收完上傳的內容後才一次性交給PHP-FPM.
附:以2KB每秒下載圖片

time trickle -s -d 2 \wget http://www.example.com/app/uploads/linux.jpeg -O /dev/null

使用第三方的斷點續傳控制項(activex 控制項)

比如 Xproer.HttpUploader5,類似 QQ 郵箱的超大附件

或者使用 SWFUpload ,據說最大支援到2G左右

php設定檔是可以改成比較大的,不過上傳的東西比較大不做斷點續傳,實際在用的時候很難受的,經常斷了只能重新傳, https://github.com/blueimp/jQuery-File-Upload

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.