成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

yedf / 2864人閱讀

摘要:場(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í)間限制問題,就算我們依舊不是最好的方案下面我們利用輸出,把數(shù)據(jù)依次輸出清空再輸出的

場(chǎng)景和痛點(diǎn) 說(shuō)明
我們工作場(chǎng)景都常會(huì)導(dǎo)出相關(guān)的excel數(shù)據(jù),有時(shí)候需要大量的數(shù)據(jù),10W,100W都有可能

我們現(xiàn)有方案都是直接利用phpexcel等類庫(kù)來(lái)操作,phpexcel的load加載或是寫入一次導(dǎo)出會(huì)遇到超時(shí)內(nèi)存和時(shí)間限制問題,就算我們ini_set依舊不是最好的方案

下面我們利用php輸出csv,把數(shù)據(jù)依次輸出清空再輸出的方式到輸出終端(瀏覽器訪問就是瀏覽器輸出)

編寫過程 說(shuō)明
關(guān)鍵具體在代碼里注釋
代碼
 $v) {
    $column_name[$i] = iconv("utf-8", "GBK", $v);
}

// 將標(biāo)題名稱通過fputcsv寫到文件句柄
fputcsv($fp, $column_name);

$export_data = [];
for ($i = 0; $i < 10; $i++) {
    foreach (range(1, 100000) as $k => $v) {
        $export_data[] = [
            "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v, "XXX" . $v
        ];
    }
    foreach ($export_data as $item) {
        $rows = array();
        foreach ($item as $export_obj) {
            $rows[] = iconv("utf-8", "GBK", $export_obj);
        }
        fputcsv($fp, $rows);
    }

    $export_data = []; //重新復(fù)制,釋放掉舊數(shù)據(jù)
}
fclose($fp);

$endTime = microtime(true);
$memoryUse = memory_get_usage();

file_put_contents("11.log", "內(nèi)存占用:" . convert($memoryUse) . "; 用時(shí):" . ($endTime - $startTime) . PHP_EOL, 8);

exit(0);
結(jié)果 測(cè)試說(shuō)明
我們模擬數(shù)據(jù),輸入了100萬(wàn)(10000 * 10)數(shù)據(jù)
日志記錄內(nèi)存使用率
# 文件大?。?4.7 MB (88,889,540 字節(jié))
# 這里的用時(shí)因?yàn)闃I(yè)務(wù)模擬,所以具體根據(jù)操作業(yè)務(wù)數(shù)據(jù)可能會(huì)更長(zhǎng),內(nèi)存占用同理

內(nèi)存占用:118.99 kb; 用時(shí):74.375253915787

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29002.html

相關(guān)文章

  • 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
  • PHP實(shí)時(shí)生成并下載超大數(shù)據(jù)量EXCEL文件

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

    摘要:最近在做后臺(tái)管理的項(xiàng)目,后臺(tái)通常有數(shù)據(jù)導(dǎo)出到的需要,經(jīng)過之前搜索通常推薦使用的是,我經(jīng)常使用的是,對(duì)于也有很好用的對(duì)應(yīng)。 最近在做后臺(tái)管理的項(xiàng)目,后臺(tái)通常有數(shù)據(jù)導(dǎo)出到 excel 的需要,經(jīng)過之前搜索通常推薦使用的是 php excel ,我經(jīng)常使用的是 laravel ,對(duì)于 php excel 也有很好用的對(duì)應(yīng) package。 開始使用是非常好用的,但是當(dāng)需要導(dǎo)出的數(shù)據(jù)達(dá)到上萬(wàn)...

    MartinHan 評(píng)論0 收藏0
  • 導(dǎo)出CSV文件格式錯(cuò)誤小結(jié)

    摘要:目前導(dǎo)出方式占用內(nèi)存較大。比如有些狀態(tài)字段,數(shù)據(jù)庫(kù)存的就是數(shù)字或只占一個(gè)字節(jié),完全換成中文狀態(tài)的話,可能達(dá)個(gè)字節(jié)甚至更多。若是必須要用中文形式。中文亂碼解決的話,其實(shí)也很簡(jiǎn)單,函數(shù),將轉(zhuǎn)為編碼,在中打開就不會(huì)錯(cuò)了 問題描述:目前、一般情況下,在web開發(fā)過程中,使用導(dǎo)入導(dǎo)出報(bào)表的情形很多。我們先說(shuō)導(dǎo)出。項(xiàng)目數(shù)據(jù)量多導(dǎo)出行數(shù)較多,50萬(wàn)行左右,選擇的是csv方式導(dǎo)出。針對(duì)以下應(yīng)用場(chǎng)景,導(dǎo)...

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

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

0條評(píng)論

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