久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      聊聊php百萬數(shù)據(jù)怎么寫入csv

      本篇文章給大家?guī)砹岁P(guān)于PHP+csv的相關(guān)知識,其中主要介紹了php百萬數(shù)據(jù)怎么通過腳本文件寫入csv的相關(guān)內(nèi)容,下面一起來看看怎么實現(xiàn)的吧,希望對大家有幫助。

      聊聊php百萬數(shù)據(jù)怎么寫入csv

      需求:

      百萬數(shù)據(jù)寫入 csv。

      框架:

      N 多年前老框架,百度都搜不到了,所以寫法趨近原生

      分析:

      數(shù)據(jù)量過大,不能用瀏覽器請求寫入 csv 下載,所以寫個腳本調(diào)取

      偽代碼:

      //xxx - 根據(jù)自己項目替換 //調(diào)取腳本文件 exec(xxx);  //腳本文件 //設(shè)置執(zhí)行時間和內(nèi)存 set_time_limit(0); ini_set('memory_limit', '128M'); //循環(huán)獲取 $id = 0; $data = 'xxx'.'n';//表頭 while(true){     //SQL     $list = xxx WHERE id > $id ORDER BY id ASC LIMIT 10000; //每次取1w防止數(shù)據(jù)庫壓力大,根據(jù)sql來,我這個有聯(lián)表,     if(empty($list)){         break;     }     foreach($list as $row){         $data .= '"' . $row['xxx'] . '",';         $data .= "n";         $id = $row['id'];//更新最大id     }     //追加寫入csv     file_put_contents('xxx', mb_convert_encoding($data, 'gbk'),FILE_APPEND);     unset($data);//基礎(chǔ)不好不確定初始化能不能清內(nèi)存就先unset了     $data = '';//初始化 }
      登錄后復(fù)制

      本質(zhì)上就是分批寫入,剛開始試驗的時候是打算不把 file_put_contents 寫在循環(huán)里的,后來發(fā)現(xiàn)數(shù)據(jù)量大的時候,幾十萬數(shù)據(jù) $data 內(nèi)存就超了另外如果超百萬數(shù)據(jù)的話需要做分文件導(dǎo)出,excel 不支持打開超過 1048576 行,理論上就是加個 $all_count 參數(shù)計當前查詢的總數(shù),超過百萬再加新文件。

      如果有更好的方法,或者代碼優(yōu)化部分歡迎討論。

      推薦學(xué)習(xí):《PHP視頻教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號