成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP大文件分片上傳

tommego / 1772人閱讀

摘要:分片上傳主要是前端將一個(gè)較大的文件分成等分的幾片,標(biāo)識(shí)當(dāng)前分片是第幾片和總共幾片,待所有的分片均上傳成功的時(shí)候,在后臺(tái)進(jìn)行合成文件即可。

一、前言

在網(wǎng)站開發(fā)中,經(jīng)常會(huì)有上傳文件的需求,有的文件size太大直接上傳,經(jīng)常會(huì)導(dǎo)致上傳過程中耗時(shí)太久,大量占用帶寬資源,因此有了分片上傳。

分片上傳主要是前端將一個(gè)較大的文件分成等分的幾片,標(biāo)識(shí)當(dāng)前分片是第幾片和總共幾片,待所有的分片均上傳成功的時(shí)候,在后臺(tái)進(jìn)行合成文件即可。

二、開發(fā)過程中遇到的問題

分片的時(shí)候每片該分多大size?太大會(huì)出現(xiàn)“413 request entity too large”

分片上傳的時(shí)候并不是嚴(yán)格按照分片的序號(hào)順序上傳,如何判斷所有的分片均上傳成功?

合成文件的時(shí)候如何判斷保證合成一個(gè)完整的文件而不出錯(cuò)?多個(gè)分片同時(shí)上傳的時(shí)候,讀寫文件沒有獨(dú)占鎖的時(shí)候會(huì)導(dǎo)致合成錯(cuò)誤。

三、問題解決

當(dāng)出現(xiàn)413的時(shí)候,修改了 nginx.conf 和php.ini
(1)nginx中添加client_max_body_size和client_body_buffer_size
(2)php.ini添加post_max_size 和 upload_max_filesize

重啟nginx和php-fpm

代碼邏輯梳理和分享

    (1)先獲取當(dāng)前分片是第幾片以及總共幾片

    (2)創(chuàng)建一個(gè)文件夾用來存儲(chǔ)所有的分片以及合成的文件

    (3)變量$done初始為true,用來判斷是否所有的分片都上傳完成,每個(gè)分片保存的時(shí)候使用分片序號(hào)作為文件名,然后判斷所有的分片文件是否存在

    (4)當(dāng)$done===true的時(shí)候,代表所有分片上傳完成,合成文件。     
       $target變量代表合成后的文件名,file_exists判斷是否已經(jīng)合成成功,然后追加方式創(chuàng)建打開文件,循環(huán)將每個(gè)分片內(nèi)容寫入一個(gè)文件中。
       在讀取每個(gè)分片之前先判斷當(dāng)前分片是否存在,是為了防止多個(gè)進(jìn)程執(zhí)行合成文件代碼塊的時(shí)候?qū)е履硞€(gè)分片已經(jīng)寫入刪除,最后導(dǎo)致合成的文件是不完整的,此時(shí)需要?jiǎng)h除合成的不完整的文件并退出exit當(dāng)前進(jìn)程。
       其中每個(gè)分片最好設(shè)置獨(dú)占鎖,flock($in, LOCK_EX),用來保證讀寫分片的時(shí)候其他進(jìn)程不會(huì)操作該分片。最后刪除分片unlink以及釋放獨(dú)占鎖。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30753.html

相關(guān)文章

  • 關(guān)于七牛云正確使用姿勢探索

    摘要:,在后續(xù)測試時(shí)遇到一個(gè)詭異,當(dāng)文件過大時(shí),任務(wù)腳本上傳到七牛云失敗。當(dāng)我遇到大文件無法上傳到七牛云時(shí),斷點(diǎn)調(diào)試到這里,發(fā)現(xiàn)返回的是。后來還真被我找到了,七牛云官方提供一個(gè)腳本工具。 業(yè)務(wù)場景 需求 我們項(xiàng)目有一個(gè)文件上傳需求,需要從客戶端上傳到七牛云的對(duì)象存儲(chǔ)和自己的應(yīng)用服務(wù)器上。這里使用七牛云主要是實(shí)現(xiàn)下載分發(fā)。應(yīng)用服務(wù)器需要留一份是因?yàn)楹罄m(xù)需要做文件分析(并且是上傳后需要立馬分析出...

    3fuyu 評(píng)論0 收藏0
  • 在Vue項(xiàng)目中使用WebUploader實(shí)現(xiàn)文件上傳

    摘要:簡介是由團(tuán)隊(duì)開發(fā)的一個(gè)簡單的以為主,為輔的現(xiàn)代文件上傳組件。采用大文件分片并發(fā)上傳,極大的提高了文件上傳效率。另外分片傳輸能夠更加實(shí)時(shí)的跟蹤上傳進(jìn)度。選擇文件的按鈕。 簡介:WebUploader是由Baidu WebFE(FEX)團(tuán)隊(duì)開發(fā)的一個(gè)簡單的以HTML5為主,F(xiàn)LASH為輔的現(xiàn)代文件上傳組件。在現(xiàn)代的瀏覽器里面能充分發(fā)揮HTML5的優(yōu)勢,同時(shí)又不摒棄主流IE瀏覽器,沿用原來的...

    mindwind 評(píng)論0 收藏0
  • 在Vue項(xiàng)目中使用WebUploader實(shí)現(xiàn)文件上傳

    摘要:簡介是由團(tuán)隊(duì)開發(fā)的一個(gè)簡單的以為主,為輔的現(xiàn)代文件上傳組件。采用大文件分片并發(fā)上傳,極大的提高了文件上傳效率。另外分片傳輸能夠更加實(shí)時(shí)的跟蹤上傳進(jìn)度。選擇文件的按鈕。 簡介:WebUploader是由Baidu WebFE(FEX)團(tuán)隊(duì)開發(fā)的一個(gè)簡單的以HTML5為主,F(xiàn)LASH為輔的現(xiàn)代文件上傳組件。在現(xiàn)代的瀏覽器里面能充分發(fā)揮HTML5的優(yōu)勢,同時(shí)又不摒棄主流IE瀏覽器,沿用原來的...

    endiat 評(píng)論0 收藏0
  • 在Vue項(xiàng)目中使用WebUploader實(shí)現(xiàn)文件上傳

    摘要:簡介是由團(tuán)隊(duì)開發(fā)的一個(gè)簡單的以為主,為輔的現(xiàn)代文件上傳組件。采用大文件分片并發(fā)上傳,極大的提高了文件上傳效率。另外分片傳輸能夠更加實(shí)時(shí)的跟蹤上傳進(jìn)度。選擇文件的按鈕。 簡介:WebUploader是由Baidu WebFE(FEX)團(tuán)隊(duì)開發(fā)的一個(gè)簡單的以HTML5為主,F(xiàn)LASH為輔的現(xiàn)代文件上傳組件。在現(xiàn)代的瀏覽器里面能充分發(fā)揮HTML5的優(yōu)勢,同時(shí)又不摒棄主流IE瀏覽器,沿用原來的...

    funnyZhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

tommego

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<