這篇文章為大家帶來了關於php的相關知識,其中主要跟大家介紹怎麼做到一分鐘多進程百萬數據導出到csv並上傳到oss,有興趣的朋友下面一起來看一下吧,希望對大家有幫助。
需求
- 產品要匯出某個團隊某些使用者的步行日誌到csv檔案裡,並且要在一個檔案內,而且速度要快不能太耗時間。
問題
- 日誌往往意味著資料量大。
- 要導在一個檔案內,資料量雖然大也能解決,無非就是分頁查詢並寫入csv。
- 速度快時間短,也能解決無非就是多進程導出多個文件,沒有什麼難的,但是需求是一個文件!
解決想法
- 先查詢出要匯出的資料總量
- 投入到批次佇列裡面啟動多個消費者查詢並寫入到多個csv裡面。
- 投遞佇列時記錄每個佇列寫入的csv具體路徑和檔案名稱。
- 利用批次佇列的特性在執行完畢時,把上一步驟記錄的多個csv依照順序合併到一個csv裡面
- 合併完成之後,刪除合併前的多個csv,保留合併的csv並上傳到oss
結果
經過測試50多萬數據,批次佇列裡面每個佇列分配5萬個資料去處理,走完一個流程耗時不到一分鐘,這種方式有多快取決於伺服器能啟動多少個消費者多少個進程,我測試時用的是自動策略,最高是同時8個消費者在執行。
推薦學習:《laravel影片教學》
以上是一分鐘多進程百萬資料匯出到csv並上傳到oss的詳細內容。更多資訊請關注PHP中文網其他相關文章!