摘要:場景和痛點說明今天因為一個老同學找我,說自己公司的物流業務都是現在用處理,按月因為數據量大,一個差不多有百萬數據,文件有接近,打開和搜索就相當的慢聯想到場景要導入數據,可能數據量很大,這里利用常用的一些方法比如會常有時間和內存限制問題下面我
場景和痛點 說明
今天因為一個老同學找我,說自己公司的物流業務都是現在用excel處理,按月因為數據量大,一個excel差不多有百萬數據,文件有接近100M,打開和搜索就相當的慢編寫過程 說明聯想到場景:要導入數據,可能excel數據量很大,這里利用常用的一些方法比如phpexcel會常有時間和內存限制問題
下面我們就利用一個利用流處理的類庫SpreadsheetReader來做大excel的讀取
關鍵具體在代碼里注釋代碼
Sheets(); if (!$sheets) { die("沒有工作表"); } //改變當前處理的工作表 $Reader->ChangeSheet(0); //打印當前所在工作表的當前所在行數據 var_dump($Reader->current()); //因為reader類集成了Iter所以可以用迭代方式處理 //這里提醒 如果文件超大,這邊的處理速度會過慢,不過不會引發內存性能問題 //$i = 0; //foreach ($Reader as $Row) //{ // if ($i>=3) { // break; // } // // echo $i . PHP_EOL; // print_r($Row); // // $i++; //} $endTime = microtime(true); $memoryUse = memory_get_usage(); echo "內存占用:" . convert($memoryUse) . "; 用時:" . ($endTime - $startTime) . PHP_EOL;結果 測試說明
上面讀取的example1.xlsx文件有100M左右,讀寫過慢,測試只開了讀取當前默認工作表的當前所在行數據日志記錄內存使用率
因數據敏感,已做屏蔽
147.77 kb array (size=50) 0 => string "xxxxxxxxxxxxxx" (length=25) 1 => string "xxxxxxxxxxxxxx" (length=15) 2 => string "xxxxxxxxxxxxxx" (length=18) 3 => string "xxxxxxxxxxxxxx" (length=12) 4 => string "xxxxxxxxxxxxxx" (length=12) 5 => string "xxxxxxxxxxxxxx" (length=12) 6 => string "xxxxxxxxxxxxxx" (length=24) 7 => string "xxxxxxxxxxxxxx" (length=12) 8 => string "xxxxxxxxxxxxxx" (length=27) 9 => string "xxxxxxxxxxxxxx" (length=12) 10 => string "xxxxxxxxxxxxxx" (length=15) 11 => string "xxxxxxxxxxxxxx" (length=28) 12 => string "xxxxxxxxxxxxxx" (length=9) 13 => string "xxxxxxxxxxxxxx" (length=12) 14 => string "xxxxxxxxxxxxxx" (length=9) 15 => string "xxxxxxxxxxxxxx" (length=6) 16 => string "xxxxxxxxxxxxxx" (length=9) 17 => string "xxxxxxxxxxxxxx" (length=3) 18 => string "xxxxxxxxxxxxxx" (length=6) 19 => string "xxxxxxxxxxxxxx" (length=3) 20 => string "xxxxxxxxxxxxxx" (length=15) 21 => string "xxxxxxxxxxxxxx" (length=15) 22 => string "xxxxxxxxxxxxxx" (length=19) 23 => string "xxxxxxxxxxxxxx" (length=13) 24 => string "xxxxxxxxxxxxxx" (length=19) 25 => string "xxxxxxxxxxxxxx" (length=12) 26 => string "xxxxxxxxxxxxxx" (length=12) 27 => string "xxxxxxxxxxxxxx" (length=12) 28 => string "xxxxxxxxxxxxxx" (length=6) 29 => string "xxxxxxxxxxxxxx" (length=12) 30 => string "xxxxxxxxxxxxxx" (length=6) 31 => string "xxxxxxxxxxxxxx" (length=15) 32 => string "xxxxxxxxxxxxxx" (length=24) 33 => string "xxxxxxxxxxxxxx" (length=18) 34 => string "xxxxxxxxxxxxxx" (length=18) 35 => string "xxxxxxxxxxxxxx" (length=24) 36 => string "xxxxxxxxxxxxxx" (length=12) 37 => string "xxxxxxxxxxxxxx" (length=18) 38 => string "xxxxxxxxxxxxxx" (length=21) 39 => string "xxxxxxxxxxxxxx" (length=9) 40 => string "xxxxxxxxxxxxxx" (length=9) 41 => string "xxxxxxxxxxxxxx" (length=18) 42 => string "xxxxxxxxxxxxxx" (length=21) 43 => string "xxxxxxxxxxxxxx" (length=15) 44 => string "xxxxxxxxxxxxxx" (length=12) 45 => string "xxxxxxxxxxxxxx" (length=6) 46 => string "xxxxxxxxxxxxxx" (length=12) 47 => string "xxxxxxxxxxxxxx" (length=22) 48 => string "xxxxxxxxxxxxxx" (length=22) 49 => string "" (length=0) 內存占用:207.55 kb; 用時:9.5835480690002
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29029.html
摘要:場景和痛點說明我們工作場景都常會導出相關的數據,有時候需要大量的數據,,都有可能我們現有方案都是直接利用等類庫來操作,的加載或是寫入一次導出會遇到超時內存和時間限制問題,就算我們依舊不是最好的方案下面我們利用輸出,把數據依次輸出清空再輸出的 場景和痛點 說明 我們工作場景都常會導出相關的excel數據,有時候需要大量的數據,10W,100W都有可能我們現有方案都是直接利用phpexce...
摘要:而常用的包需要把所有數據拿到后才能生成,在面對生成超大數據量的文件時這顯然是會造成內存溢出的,所以考慮使用讓邊寫入輸出流邊讓瀏覽器下載的形式來完成需求。 最近接到一個需求,通過選擇的時間段導出對應的用戶訪問日志到excel中, 由于用戶量較大,經常會有導出50萬加數據的情況。而常用的PHPexcel包需要把所有數據拿到后才能生成excel, 在面對生成超大數據量的excel文件時這顯然...
關于 PHP 導出 excel csv 常用的有 PHPexcel ,本文整理了一些其他方案。 高性能 Excel 擴展 sudo apt-get install -y zlib1g-dev git clone https://github.com/jmcnamara/libxlsxwriter.git cd libxlsxwriter make && sudo make install // ...
摘要:四層負載均衡不會引起超時。動態修改包的目標地址,并轉發數據包使其到達不同的機器上來實現負載均衡的目的,因此節點不會引起超時。七層負載均衡等待上游響應超時。例如使用多線程并發減少遠程查詢的總體時間如需數據有序,可以使用方案。 B端業務經常要提供下載報表的功能,一般的方法是先查詢出所有數據,然后在內存中組裝成報表(如XLS/XLSX格式)后統一輸出。但是如果生成報表需要查詢的數據量很大,遠...
摘要:過去工作中使用較多,碰到并解決了各種大大小小的問題,總結出這樣一篇文章,一方面記錄自己踩過的坑,一方面與大家分享,讓大家少走彎路,并不斷完善之,歡迎大家去上面和提交,不斷補充和優化,打造最全面的開發解決方案地址原文地址基礎小試牛刀引用文 過去工作中使用PHPExcel較多,碰到并解決了各種大大小小的問題,總結出這樣一篇文章,一方面記錄自己踩過的坑,一方面與大家分享,讓大家少走彎路,并不...
閱讀 917·2021-10-18 13:32
閱讀 3513·2021-09-30 09:47
閱讀 2155·2021-09-23 11:21
閱讀 1878·2021-09-09 09:34
閱讀 3479·2019-08-30 15:43
閱讀 1522·2019-08-30 11:07
閱讀 1061·2019-08-29 16:14
閱讀 724·2019-08-29 11:06