搜尋

首頁  >  問答  >  主體

php 匯入excel 前台顯示進度條

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

怪我咯怪我咯2770 天前1340

全部回覆(3)我來回復

  • 天蓬老师

    天蓬老师2017-05-24 11:36:21

    這個要看你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進行分步驟/分時/分段,然後在瀏覽器中一步一步執行導入任務,並根據劃分的結果來顯示進度。

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-24 11:36:21

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

    回覆
    0
  • PHPz

    PHPz2017-05-24 11:36:21

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

    回覆
    0
  • 取消回覆