最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析PHP數(shù)據(jù)導(dǎo)出知識(shí)點(diǎn)

 更新時(shí)間:2018年02月17日 14:32:04   投稿:laozhang  
本文是小編整理的關(guān)于PHP數(shù)據(jù)導(dǎo)出知識(shí)點(diǎn)的總結(jié)內(nèi)容,分析了經(jīng)常出現(xiàn)的問題,以及解決辦法,有興趣的朋友可以參考學(xué)習(xí)下。

最近在做后臺(tái)管理的項(xiàng)目,后臺(tái)通常有數(shù)據(jù)導(dǎo)出到 excel 的需要,經(jīng)過之前搜索通常推薦使用的是 php excel ,我經(jīng)常使用的是 laravel ,對于 php excel 也有很好用的對應(yīng) package。

開始使用是非常好用的,但是當(dāng)需要導(dǎo)出的數(shù)據(jù)達(dá)到上萬條時(shí)就直接帶來內(nèi)存不足的問題。

然后我找到了幾個(gè)解決方案。

前端解決方案

PHP配合SheetJS/js-xlsx導(dǎo)出Excel大量數(shù)據(jù)

這個(gè)方案好處的不需要額外的接口,但是要依賴于前端開發(fā)者。

導(dǎo)出成 csv

該方案速度較快,完全后端實(shí)現(xiàn),缺點(diǎ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ù)。

以上就是本次知識(shí)點(diǎn)的全部內(nèi)容,感謝大家對腳本之家的支持。

相關(guān)文章

最新評論

林甸县| 扬州市| 长宁区| 太谷县| 祁门县| 卢龙县| 庆城县| 灵璧县| 汝州市| 孟州市| 南京市| 奉贤区| 寿光市| 仁怀市| 东光县| 浦东新区| 潜江市| 盘山县| 太白县| 班戈县| 嘉善县| 呼图壁县| 南华县| 常德市| 靖州| 通化市| 义马市| 河源市| 泗洪县| 徐闻县| 铜鼓县| 长丰县| 临洮县| 攀枝花市| 中西区| 德保县| 县级市| 利辛县| 台州市| 新乡市| 界首市|