校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PHP實現實時生成并下載超大數據量的EXCEL文件詳解

PHP實現實時生成并下載超大數據量的EXCEL文件詳解

熱門標簽:襄陽房產電銷機器人招商 百度地圖標注飯店位置怎么 施工地圖標注怎么做 個性化地圖標注在線 清遠陽山400電話號碼如何申請 百度地圖標注名編輯 安徽移動外呼系統 深圳400電話辦理那家好 怎么在高德地圖標注行走軌跡

前言

最近在工作中接到一個需求,通過選擇的時間段導出對應的用戶訪問日志到excel中, 由于用戶量較大,經常會有導出50萬加數據的情況。而常用的PHPexcel包需要把所有數據拿到后才能生成excel, 在面對生成超大數據量的excel文件時這顯然是會造成內存溢出的,所以考慮使用讓PHP邊寫入輸出流邊讓瀏覽器下載的形式來完成需求。

我們通過如下的方式寫入PHP輸出流

$fp = fopen('php://output', 'a');
fputs($fp, 'strings');
....
....
fclose($fp)

php://output是一個可寫的輸出流,允許程序像操作文件一樣將輸出寫入到輸出流中,PHP會把輸出流中的內容發送給web服務器并返回給發起請求的瀏覽器

另外由于excel數據是從數據庫里逐步讀出然后寫入輸出流的所以需要將PHP的執行時間設長一點(默認30秒)set_time_limit(0)不對PHP執行時間做限制。

注:以下代碼只是闡明生成大數據量EXCEL的思路和步驟,并且在去掉項目業務代碼后程序有語法錯誤不能拿來直接運行,請根據自己的需求填充對應的業務代碼!

 /**
  * 文章訪問日志
  * 下載的日志文件通常很大, 所以先設置csv相關的Header頭, 然后打開
  * PHP output流, 漸進式的往output流中寫入數據, 寫到一定量后將系統緩沖沖刷到響應中
  * 避免緩沖溢出
  */
 public function articleAccessLog($timeStart, $timeEnd)
 {
  set_time_limit(0);
  $columns = [
   '文章ID', '文章標題', ......
  ];
  $csvFileName = '用戶日志' . $timeStart .'_'. $timeEnd . '.xlsx';
  //設置好告訴瀏覽器要下載excel文件的headers
  header('Content-Description: File Transfer');
  header('Content-Type: application/vnd.ms-excel');
  header('Content-Disposition: attachment; filename="'. $fileName .'"');
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  $fp = fopen('php://output', 'a');//打開output流
  mb_convert_variables('GBK', 'UTF-8', $columns);
  fputcsv($fp, $columns);//將數據格式化為CSV格式并寫入到output流中
  $accessNum = '1000000'//從數據庫獲取總量,假設是一百萬
  $perSize = 1000;//每次查詢的條數
  $pages = ceil($accessNum / $perSize);
  $lastId = 0;
  for($i = 1; $i = $pages; $i++) {
   $accessLog = $logService->getArticleAccessLog($timeStart, $timeEnd, $lastId, $perSize);
   foreach($accessLog as $access) {
    $rowData = [
     ......//每一行的數據
    ];
    mb_convert_variables('GBK', 'UTF-8', $rowData);
    fputcsv($fp, $rowData);
    $lastId = $access->id;
   }
   unset($accessLog);//釋放變量的內存
   //刷新輸出緩沖到瀏覽器
   ob_flush();
   flush();//必須同時使用 ob_flush() 和flush() 函數來刷新輸出緩沖。
  }
  fclose($fp);
  exit();
 }

好了, 其實很簡單,就是用逐步寫入輸出流并發送到瀏覽器讓瀏覽器去逐步下載整個文件,由于是逐步寫入的無法獲取文件的總體size所以就沒辦法通過設置header("Content-Length: $size");在下載前告訴瀏覽器這個文件有多大了。不過不影響整體的效果這里的核心問題是解決大文件的實時生成和下載。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • PHP導出MySQL數據到Excel文件(fputcsv)
  • php+ajax實現帶進度條的大數據排隊導出思路以及源碼
  • phpadmin如何導入導出大數據文件及php.ini參數修改
  • phpexcel導入excel處理大數據(實例講解)
  • php 在線導入mysql大數據程序
  • 淺析THINKPHP的addAll支持的最大數據量
  • php+ajax導入大數據時產生的問題處理
  • php 大數據量及海量數據處理算法總結
  • php使用fputcsv實現大數據的導出操作詳解

標簽:臨夏 阜陽 中衛 黑河 駐馬店 延邊 欽州 南昌

巨人網絡通訊聲明:本文標題《PHP實現實時生成并下載超大數據量的EXCEL文件詳解》,本文關鍵詞  PHP,實現,實時,生成,并,下載,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現實時生成并下載超大數據量的EXCEL文件詳解》相關的同類信息!
  • 本頁收集關于PHP實現實時生成并下載超大數據量的EXCEL文件詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    视频一区视频二区在线观看| 国产成人自拍网| av一二三不卡影片| 国产91精品一区二区| 99久久久久久99| 国产欧美1区2区3区| 蜜臀av一区二区在线观看| 91久久奴性调教| 一区二区高清在线| 一本大道av一区二区在线播放| 国产午夜精品一区二区| 国产在线观看一区二区 | 欧美国产精品v| 国产成人在线视频免费播放| 久久精品人人做| 高清不卡一二三区| 亚洲欧美一区二区三区孕妇| 91麻豆国产福利在线观看| 久久精工是国产品牌吗| 欧美精品乱码久久久久久| 久草精品在线观看| 亚洲天堂2016| 国产精品污网站| 精品国产电影一区二区| 91麻豆精品在线观看| 亚洲国产精品人人做人人爽| 国产精品主播直播| 最近日韩中文字幕| 欧美丝袜丝交足nylons| 久久国产精品99精品国产| 欧美国产亚洲另类动漫| 欧美日韩亚洲综合在线 | 欧美岛国在线观看| 成人精品免费视频| 午夜视频在线观看一区二区三区| 777奇米四色成人影色区| 欧美视频你懂的| 亚洲一本大道在线| 久久免费看少妇高潮| 91传媒视频在线播放| 成人动漫一区二区在线| 蜜桃视频一区二区三区| **网站欧美大片在线观看| 欧美日韩一区视频| 色狠狠av一区二区三区| 777色狠狠一区二区三区| 青青青伊人色综合久久| 久久美女高清视频| 91精品在线观看入口| 欧美体内she精视频| 成人免费高清在线观看| 福利一区二区在线观看| 美洲天堂一区二卡三卡四卡视频| 亚洲一区二区三区四区在线| 亚洲欧洲日产国码二区| 亚洲色图欧美激情| 亚洲免费在线视频一区 二区| 日本一区二区三区在线不卡| 久久你懂得1024| 中文字幕国产一区二区| 国产精品乱码一区二三区小蝌蚪| 久久精品视频一区二区| 久久久久久久网| 国产精品久久三| 一区二区三区不卡在线观看 | 成人精品一区二区三区中文字幕| 国产一区二区三区黄视频| 国产成人三级在线观看| 国产91精品一区二区麻豆亚洲| 成人av电影在线播放| 99视频精品免费视频| 在线免费观看不卡av| 4438亚洲最大| 国产精品久久久久精k8| 亚洲欧美日韩久久精品| 国产精品嫩草久久久久| 亚洲激情五月婷婷| 蜜臀久久99精品久久久久宅男| 国产成人综合网| 91麻豆精品久久久久蜜臀| 欧美精品xxxxbbbb| 中文字幕一区视频| 另类综合日韩欧美亚洲| 色一情一伦一子一伦一区| 日本电影亚洲天堂一区| 日本精品一级二级| 久久久久久亚洲综合影院红桃| 亚洲精品一二三四区| 国产91精品免费| 欧美福利视频一区| 亚洲视频中文字幕| 风间由美一区二区av101| 日韩三级免费观看| 日韩av不卡在线观看| 91黄色免费观看| 亚洲精品中文在线影院| 国产一区二区三区观看| 欧美肥妇毛茸茸| 夜夜爽夜夜爽精品视频| av高清不卡在线| 国产精品午夜在线| 国产精品羞羞答答xxdd| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日韩欧美综合在线| 石原莉奈一区二区三区在线观看| 色就色 综合激情| 天天操天天色综合| 欧美三片在线视频观看| 亚洲18女电影在线观看| 欧美日韩成人一区| 日本亚洲天堂网| 精品欧美久久久| 福利电影一区二区| 亚洲欧洲成人自拍| 在线免费亚洲电影| 亚洲h在线观看| 日韩一区二区电影网| 日本不卡视频在线| 2019国产精品| 成人激情电影免费在线观看| 亚洲人123区| 91精品啪在线观看国产60岁| 免费看黄色91| 在线免费视频一区二区| 午夜精品福利一区二区三区蜜桃| 欧美伊人久久久久久久久影院| 性久久久久久久久久久久| 欧美欧美欧美欧美| 国产一区二区在线观看免费| 国产精品女同一区二区三区| 欧美日韩国产成人在线91| 国产中文字幕一区| 亚洲自拍另类综合| xnxx国产精品| 欧美日韩在线亚洲一区蜜芽| 九一久久久久久| 视频在线在亚洲| 亚洲色图欧美偷拍| 中文字幕精品三区| 欧美草草影院在线视频| 欧美三级一区二区| 99视频有精品| 成人免费福利片| 国产成人免费xxxxxxxx| 蜜臀av国产精品久久久久| 亚洲一区欧美一区| 亚洲成精国产精品女| 亚洲精品乱码久久久久久久久| 国产欧美1区2区3区| 久久在线免费观看| 国产色爱av资源综合区| 日韩一级免费一区| 精品国产亚洲在线| 久久婷婷国产综合精品青草| 3atv在线一区二区三区| 欧美电影影音先锋| 日韩一区二区中文字幕| 日韩欧美高清在线| 欧美电影免费观看高清完整版在线观看| 欧美在线制服丝袜| 欧美色精品在线视频| 在线91免费看| 日韩一区二区三区四区五区六区| 欧美精选一区二区| 日韩亚洲欧美综合| 国产欧美日本一区视频| 国产精品免费久久久久| 亚洲人成在线播放网站岛国| 亚洲一区二区3| 国产成人8x视频一区二区| 性久久久久久久久| 精品无人码麻豆乱码1区2区| 国产中文字幕精品| 欧美在线观看视频在线| 欧美xxxx老人做受| 日韩伦理av电影| 免费久久99精品国产| 成人黄色小视频在线观看| 91电影在线观看| 国产亚洲成年网址在线观看| 亚洲欧美aⅴ...| 国产成人精品免费看| 欧美一区二区三区在线| 国产精品国产精品国产专区不蜜| 丝袜美腿亚洲一区| 成人性视频免费网站| 亚洲精品在线免费观看视频| 一区二区三区免费在线观看| 国产精品99久久不卡二区| 欧美日韩国产经典色站一区二区三区| 国产日韩亚洲欧美综合| 午夜国产不卡在线观看视频| 91小视频在线观看| 欧美激情一区不卡| 国产一区 二区| 5858s免费视频成人| 亚洲一区二区三区视频在线| 91在线无精精品入口| 亚洲国产精品精华液2区45| 国产一区二区三区免费看|