淺析PHP數(shù)據(jù)導(dǎo)出知識點
最近在做后臺管理的項目,后臺通常有數(shù)據(jù)導(dǎo)出到 excel 的需要,經(jīng)過之前搜索通常推薦使用的是 php excel ,我經(jīng)常使用的是 laravel ,對于 php excel 也有很好用的對應(yīng) package。
開始使用是非常好用的,但是當(dāng)需要導(dǎo)出的數(shù)據(jù)達到上萬條時就直接帶來內(nèi)存不足的問題。
然后我找到了幾個解決方案。
前端解決方案
PHP配合SheetJS/js-xlsx導(dǎo)出Excel大量數(shù)據(jù)
這個方案好處的不需要額外的接口,但是要依賴于前端開發(fā)者。
導(dǎo)出成 csv
該方案速度較快,完全后端實現(xiàn),缺點是 csv 格式對導(dǎo)出的形式要求比較高,要求是純數(shù)據(jù),不能存在圖片之類的富文本形式。
下面主要介紹一下導(dǎo)出 csv 的方式
php 官方文檔 的介紹
<?php $list = array ( array('aaa', 'bbb', 'ccc', 'dddd'), array('123', '456', '789'), array('"aaa"', '"bbb"') ); $fp = fopen('file.csv', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } fclose($fp); ?>
導(dǎo)出完整例子
<?php $name = 'test'; header ( "Content-type:application/vnd.ms-excel" ); header ( "Content-Disposition:filename=".$name.".csv" ); header ('Cache-Control: max-age=0'); //打開PHP文件句柄,php://output 表示直接輸出到瀏覽器 $fp = fopen('php://output', 'a'); // 寫入BOM頭,防止亂碼 fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF)); // 生成的測試數(shù)據(jù) function test() { for ($i=0; $i < 150000; $i++) { yield ['name', $i, '男']; } } // 表頭 $headers = ['名字', '年齡', '性別']; fputcsv($fp, $headers); foreach (test() as $value) { fputcsv($fp, $value); } fclose($fp); ?>
在 laravel 中配合 chunk 使用可以方便快速導(dǎo)出全部數(shù)據(jù)。
以上就是本次知識點的全部內(nèi)容,感謝大家對腳本之家的支持。
相關(guān)文章
php中在PDO中使用事務(wù)(Transaction)
事務(wù) (Transaction) 是操作數(shù)據(jù)庫中很重要的一個功能, 它可以讓你預(yù)定一條, 或者一系列 SQL 語句, 然后一起執(zhí)行2011-05-05php使用memcoder將視頻轉(zhuǎn)成mp4格式的方法
這篇文章主要介紹了php使用memcoder將視頻轉(zhuǎn)成mp4格式的方法,涉及php操作視頻文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03php 類中的常量、靜態(tài)屬性、非靜態(tài)屬性的區(qū)別
這篇文章主要介紹了php 類中的常量、靜態(tài)屬性、非靜態(tài)屬性的區(qū)別與介紹,需要的朋友可以參考下2017-04-04php 隨機記錄mysql rand()造成CPU 100%的解決辦法
mysql數(shù)據(jù)庫有10幾萬條數(shù)據(jù),使用rand()提取隨機10條記錄,導(dǎo)致服務(wù)器cpu占用居高不下直至死機~2010-05-05PHP+MariaDB數(shù)據(jù)庫操作基本技巧備忘總結(jié)
這篇文章主要介紹了PHP+MariaDB數(shù)據(jù)庫操作基本技巧,結(jié)合實例形式總結(jié)分析了PHP+MariaDB數(shù)據(jù)庫連接、判斷以及基于PHP+MariaDB的用戶登陸、管理、刪除等相關(guān)操作實現(xiàn)技巧與注意事項,需要的朋友可以參考下2018-05-05php實現(xiàn)壓縮合并js的方法【附demo源碼下載】
這篇文章主要介紹了php實現(xiàn)壓縮合并js的方法,涉及php壓縮文件類JSMin的相關(guān)調(diào)用與使用技巧,并附帶了完整的demo源碼供讀者下載參考,需要的朋友可以參考下2016-09-09