国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

php中導(dǎo)出大量數(shù)據(jù)的實(shí)現(xiàn)方法

2020-03-22 19:47:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在PHP開(kāi)發(fā)的過(guò)程中有時(shí)候會(huì)有數(shù)據(jù)需要導(dǎo)出,可以利用各種框架中的一些包來(lái)直接獲取數(shù)據(jù)然后丟入對(duì)應(yīng)的處理方法就行了,但是當(dāng)遇到大量的數(shù)據(jù)需要導(dǎo)出的時(shí)候,我們就需要用其他的方法來(lái)實(shí)現(xiàn)了。

一般處理大數(shù)據(jù)有如下幾種解決辦法: 通過(guò)添加或者修改事件觸發(fā)腳本,生成數(shù)據(jù);定時(shí)任務(wù)執(zhí)行腳本生成數(shù)據(jù);直接使用phpexcel導(dǎo)出大量數(shù)據(jù);采用fputcsv實(shí)時(shí)數(shù)據(jù)流方式寫入。用一張圖表示如下:

QQ截圖20180719163254.png

這里主要記錄下使用fputcsv方式導(dǎo)出數(shù)據(jù)。

html' target='_blank'>public function exportData() set_time_limit(0); ini_set( memory_limit , 1024M  $columns = [ 列名1 , 列名2 , 列名3 //需要幾列,定義好列名 ]; //設(shè)置好告訴瀏覽器要下載excel文件的headers header( Content-Description: File Transfer  header( Content-Type: application/vnd.ms-excel  header( Content-Disposition: attachment; filename= 導(dǎo)出數(shù)據(jù)- .date( Y-m-d , time()). .csv  header( Expires: 0  header( Cache-Control: must-revalidate  header( Pragma: public $fp = fopen( php://output , a //打開(kāi)output流 mb_convert_variables( GBK , UTF-8 , $columns); fputcsv($fp, $columns);//將數(shù)據(jù)格式化為CSV格式并寫入到output流中 //添加查詢條件,獲取需要的數(shù)據(jù) $query = Model::class()- where(); //獲取總數(shù),分頁(yè)循環(huán)處理 $accessNum = $query- count(); $perSize = 1000; $pages = ceil($accessNum / $perSize);  for($i = 1; $i = $pages; $i++) { $db_data = $query- limit($perSize)- offset(($i-1)*$perSize)- get();  foreach($db_data as $key = $value) {  $rowData = []; //獲取每列數(shù)據(jù),轉(zhuǎn)換處理成需要導(dǎo)出的數(shù)據(jù) //需要格式轉(zhuǎn)換,否則會(huì)亂碼 mb_convert_variables( GBK , UTF-8 , $rowData); fputcsv($fp, $rowData); } //釋放變量的內(nèi)存 unset($db_data); //刷新輸出緩沖到瀏覽器 ob_flush(); //必須同時(shí)使用 ob_flush() 和flush() 函數(shù)來(lái)刷新輸出緩沖。 flush(); fclose($fp);  exit(); }

這樣會(huì)一邊生成,一邊寫入下載文件,提高處理速度。
之前使用的包處理,生成一個(gè)25M的數(shù)據(jù),要20分鐘。這種方式處理需要1分多鐘(也和實(shí)際處理的環(huán)境有關(guān))。

相關(guān)推薦:

PHP csv大量數(shù)據(jù)導(dǎo)出分割處理

php導(dǎo)入大量數(shù)據(jù)到mysql(示例)

以上就是php中導(dǎo)出大量數(shù)據(jù)的實(shí)現(xiàn)方法的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 贡嘎县| 襄城县| 景德镇市| 石河子市| 珠海市| 三门峡市| 张家界市| 彰武县| 大理市| 永清县| 瓮安县| 平南县| 阳西县| 五指山市| 陆川县| 合阳县| 泾阳县| 盐津县| 基隆市| 石渠县| 德昌县| 德兴市| 武功县| 孝义市| 眉山市| 容城县| 灯塔市| 集贤县| 松潘县| 嘉黎县| 海原县| 涞水县| 白山市| 休宁县| 泗水县| 清河县| 铜鼓县| 蒲城县| 灵丘县| 永城市| 台江县|