国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP讀取超大的excel文件數(shù)據(jù)的方案

dkzwm / 3307人閱讀

摘要:場(chǎng)景和痛點(diǎn)說(shuō)明今天因?yàn)橐粋€(gè)老同學(xué)找我,說(shuō)自己公司的物流業(yè)務(wù)都是現(xiàn)在用處理,按月因?yàn)閿?shù)據(jù)量大,一個(gè)差不多有百萬(wàn)數(shù)據(jù),文件有接近,打開和搜索就相當(dāng)?shù)穆?lián)想到場(chǎng)景要導(dǎo)入數(shù)據(jù),可能數(shù)據(jù)量很大,這里利用常用的一些方法比如會(huì)常有時(shí)間和內(nèi)存限制問(wèn)題下面我

場(chǎng)景和痛點(diǎn) 說(shuō)明
今天因?yàn)橐粋€(gè)老同學(xué)找我,說(shuō)自己公司的物流業(yè)務(wù)都是現(xiàn)在用excel處理,按月因?yàn)閿?shù)據(jù)量大,一個(gè)excel差不多有百萬(wàn)數(shù)據(jù),文件有接近100M,打開和搜索就相當(dāng)?shù)穆?p>聯(lián)想到場(chǎng)景:要導(dǎo)入數(shù)據(jù),可能excel數(shù)據(jù)量很大,這里利用常用的一些方法比如phpexcel會(huì)常有時(shí)間和內(nèi)存限制問(wèn)題

下面我們就利用一個(gè)利用流處理的類庫(kù)SpreadsheetReader來(lái)做大excel的讀取

編寫過(guò)程 說(shuō)明
關(guān)鍵具體在代碼里注釋
代碼
Sheets();
if (!$sheets) {
    die("沒(méi)有工作表");
}

//改變當(dāng)前處理的工作表
$Reader->ChangeSheet(0);

//打印當(dāng)前所在工作表的當(dāng)前所在行數(shù)據(jù)
var_dump($Reader->current());

//因?yàn)閞eader類集成了Iter所以可以用迭代方式處理
//這里提醒 如果文件超大,這邊的處理速度會(huì)過(guò)慢,不過(guò)不會(huì)引發(fā)內(nèi)存性能問(wèn)題
//$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 "內(nèi)存占用:" . convert($memoryUse) . "; 用時(shí):" . ($endTime - $startTime) . PHP_EOL;
結(jié)果 測(cè)試說(shuō)明
上面讀取的example1.xlsx文件有100M左右,讀寫過(guò)慢,測(cè)試只開了讀取當(dāng)前默認(rèn)工作表的當(dāng)前所在行數(shù)據(jù)
因數(shù)據(jù)敏感,已做屏蔽
日志記錄內(nèi)存使用率
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)

內(nèi)存占用:207.55 kb; 用時(shí):9.5835480690002

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/29029.html

相關(guān)文章

  • PHP導(dǎo)出超大CSV格式Excel方案

    摘要:場(chǎng)景和痛點(diǎn)說(shuō)明我們工作場(chǎng)景都常會(huì)導(dǎo)出相關(guān)的數(shù)據(jù),有時(shí)候需要大量的數(shù)據(jù),,都有可能我們現(xiàn)有方案都是直接利用等類庫(kù)來(lái)操作,的加載或是寫入一次導(dǎo)出會(huì)遇到超時(shí)內(nèi)存和時(shí)間限制問(wèn)題,就算我們依舊不是最好的方案下面我們利用輸出,把數(shù)據(jù)依次輸出清空再輸出的 場(chǎng)景和痛點(diǎn) 說(shuō)明 我們工作場(chǎng)景都常會(huì)導(dǎo)出相關(guān)的excel數(shù)據(jù),有時(shí)候需要大量的數(shù)據(jù),10W,100W都有可能我們現(xiàn)有方案都是直接利用phpexce...

    yedf 評(píng)論0 收藏0
  • PHP實(shí)時(shí)生成并下載超大數(shù)據(jù)EXCEL文件

    摘要:而常用的包需要把所有數(shù)據(jù)拿到后才能生成,在面對(duì)生成超大數(shù)據(jù)量的文件時(shí)這顯然是會(huì)造成內(nèi)存溢出的,所以考慮使用讓邊寫入輸出流邊讓瀏覽器下載的形式來(lái)完成需求。 最近接到一個(gè)需求,通過(guò)選擇的時(shí)間段導(dǎo)出對(duì)應(yīng)的用戶訪問(wèn)日志到excel中, 由于用戶量較大,經(jīng)常會(huì)有導(dǎo)出50萬(wàn)加數(shù)據(jù)的情況。而常用的PHPexcel包需要把所有數(shù)據(jù)拿到后才能生成excel, 在面對(duì)生成超大數(shù)據(jù)量的excel文件時(shí)這顯然...

    Neilyo 評(píng)論0 收藏0
  • php 導(dǎo)出 excel

    關(guān)于 PHP 導(dǎo)出 excel csv 常用的有 PHPexcel ,本文整理了一些其他方案。 高性能 Excel 擴(kuò)展 sudo apt-get install -y zlib1g-dev git clone https://github.com/jmcnamara/libxlsxwriter.git cd libxlsxwriter make && sudo make install // ...

    付永剛 評(píng)論0 收藏0
  • 【SpringMvc】后臺(tái)系統(tǒng)超大報(bào)表下載超時(shí)處理

    摘要:四層負(fù)載均衡不會(huì)引起超時(shí)。動(dòng)態(tài)修改包的目標(biāo)地址,并轉(zhuǎn)發(fā)數(shù)據(jù)包使其到達(dá)不同的機(jī)器上來(lái)實(shí)現(xiàn)負(fù)載均衡的目的,因此節(jié)點(diǎn)不會(huì)引起超時(shí)。七層負(fù)載均衡等待上游響應(yīng)超時(shí)。例如使用多線程并發(fā)減少遠(yuǎn)程查詢的總體時(shí)間如需數(shù)據(jù)有序,可以使用方案。 B端業(yè)務(wù)經(jīng)常要提供下載報(bào)表的功能,一般的方法是先查詢出所有數(shù)據(jù),然后在內(nèi)存中組裝成報(bào)表(如XLS/XLSX格式)后統(tǒng)一輸出。但是如果生成報(bào)表需要查詢的數(shù)據(jù)量很大,遠(yuǎn)...

    kohoh_ 評(píng)論0 收藏0
  • 打造最全面PHPExcel開發(fā)解決方案

    摘要:過(guò)去工作中使用較多,碰到并解決了各種大大小小的問(wèn)題,總結(jié)出這樣一篇文章,一方面記錄自己踩過(guò)的坑,一方面與大家分享,讓大家少走彎路,并不斷完善之,歡迎大家去上面和提交,不斷補(bǔ)充和優(yōu)化,打造最全面的開發(fā)解決方案地址原文地址基礎(chǔ)小試牛刀引用文 過(guò)去工作中使用PHPExcel較多,碰到并解決了各種大大小小的問(wèn)題,總結(jié)出這樣一篇文章,一方面記錄自己踩過(guò)的坑,一方面與大家分享,讓大家少走彎路,并不...

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

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

0條評(píng)論

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