91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php實現百萬級數據快速導出CSV的方法

發布時間:2021-06-28 16:16:17 來源:億速云 閱讀:446 作者:chen 欄目:編程語言

這篇文章主要講解了“php實現百萬級數據快速導出CSV的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php實現百萬級數據快速導出CSV的方法”吧!

php實現百萬級數據導出這里使用了服務器的緩存來實現

實現:

一:建立測試表,并加入測試數據

1:創建測試表

這里我建了一個test表,字段分別為:id,name,age,email

2:加入測試數據

(1)首先手動向表中添加若干行數據

然后執行如下命令批量添加數據

INSERT INTO test (name,age,email) SELECT name,age,email FROM test;

多次執行上面的命令測試數據會呈指數增加,這樣就可以得到很多測試數據

二:php實現導出百萬級數據(這里我的查詢命令使用的時Yii框架自帶的查詢命令)

//讓程序一直運行
set_time_limit(0);
//設置程序運行內存
ini_set('memory_limit', '128M');
//導出文件名
$fileName = '測試導出數據';
header('Content-Encoding: UTF-8');
header("Content-type:application/vnd.ms-excel;charset=UTF-8");
header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
//打開php標準輸出流
$fp = fopen('php://output', 'a');
//添加BOM頭,以UTF8編碼導出CSV文件,如果文件頭未添加BOM頭,打開會出現亂碼。
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));
//添加導出標題
fputcsv($fp, ['姓名', '歲數', '郵箱']);
$nums = 10000; //每次導出數量
$count = Test::find()->count();
$step = ceil($count/$nums);//循環次數
for($i = 0; $i < $step; $i++) {
    $result = Test::find()
        ->select(['name', 'age', 'email'])
        ->limit($nums)
        ->offset($i * $nums)
        ->asArray()
        ->all();
    foreach ($result as $item) {
        fputcsv($fp, $item);
    }
    //每1萬條數據就刷新緩沖區
    ob_flush();
    flush();
}
exit;

如上測試后可以發現導出一百萬左右數據只需十幾秒左右時間,效率還算是不錯的

感謝各位的閱讀,以上就是“php實現百萬級數據快速導出CSV的方法”的內容了,經過本文的學習后,相信大家對php實現百萬級數據快速導出CSV的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

塔河县| 卓尼县| 城口县| 石河子市| 二连浩特市| 凤庆县| 平果县| 屯昌县| 从江县| 逊克县| 玉屏| 珠海市| 客服| 华池县| 蒙城县| 丘北县| 灵寿县| 桦南县| 仁怀市| 山丹县| 洪洞县| 依安县| 康平县| 滁州市| 通许县| 万安县| 莱州市| 尚义县| 阿拉善左旗| 昆山市| 蚌埠市| 青海省| 隆回县| 青阳县| 乌鲁木齐县| 德江县| 全椒县| 汕尾市| 芜湖市| 开封县| 贡嘎县|