php 匯入excel 前台顯示進度條
怪我咯
怪我咯 2017-05-24 11:34:21
0
3
1307

php 匯入excel 前台顯示進度條,求指教(不是上傳excel檔案的進度,而是php 讀取excel->處理資料->寫到mysql 這個過程的進度條)

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(3)
Peter_Zhu

這個要看你Excel的大小和伺服器允許的一次請求的最長時間。我覺得可以分成以下幾種情況:

  1. Excel很小,一兩秒鐘就導入完成了 -- 這種情況下直接顯示個假的進度條就差不多了。比如說:第一秒動畫進度到50%,第二秒進度到75%,第三名動畫進度到90%,然後等伺服器回OK進度到100%.

  2. Excel比較大,但是能在伺服器允許的一次請求的最長時間內完成 -- 這種情況下,也可以有好幾種做法:

    1. 簡單粗暴點,導入Excel的進度自行估算下存放到某個位置(例如資料庫某個欄位中),另起一個ajax請求或EventSource每隔一段時間(例如500ms)來輪詢下進度,並顯示動畫。

    2. 利用HTTP的長連接,在導入Excel的請求中輸出進度,記得要及時刷新到瀏覽器中。而瀏覽器中則根據傳回的資料顯示進度動畫。

  3. Excel非常大或業務比較複雜,無法在伺服器允許的一次請求的最長時間內完成-- 這時候,如果服務端能跑CLI腳本,則建議跑CLI腳本來導入(進度顯示可以參考2.1) ;否則的話就得對Excel進行分步驟/分時/分段,然後在瀏覽器中一步一步執行導入任務,並根據劃分的結果來顯示進度。

我想大声告诉你

讀取excel後能取得記錄總條數麼?
能,那就那麼整唄,已處理記錄數/總數。
不能,那就放棄100%完成進度條,弄個反覆循環的進度條表示我還活著就行了。

PHPzhong

不知道你會不會用swoole,也就說你上傳完excel,之後,取得完記錄條數,然後直接用swoole來執行導入sql的動作。你目前的頁面只要通過統計資料庫的記錄條數,就能得到進度百分比了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板