php 導出大量csv 文件

 適用於導出大量csv文件

不懂 yield  的  去 這裏 

小文件 導出 可以用這個


function test(){
    $res = exec_db1("select * from tab_user_game limit 0 ,50000");
    while ($row = mysqli_fetch_assoc($res)) {
        yield  $row;
        //$data[] = $row;
    }
}
?>
<a href="./cache/cehsi.csv" download="cehsi.csv"> 大量csv文件導出 </a>

<?php
csv_export(test());
function csv_export($data = array()) {
    ini_set('max_execution_time', 0);// 設置PHP超時時間
    ini_set('memory_limit', '2048M');// 設置PHP臨時允許內存大小

    $filePath = '/home/www/admin.1yx.com/cache';

    //計數器
    $num = 0;
    $file_name = 'cehsi.csv';
    $limit = 1000;
    //逐行取出數據,不浪費內存
    $count = count($data);
        $url = $filePath."/".$file_name;
        $fp = fopen($url, 'w'); //生成臨時文件
        for ($i = 0; $i < $count; $i++) {
            $num++;
            //刷新一下輸出buffer,防止由於數據過多造成問題
            if ($limit == $num) {
                $num = 0;
                ob_flush();
                flush();
            }

            foreach ($data as $key => $value) {
                fputcsv($fp, $value);
            }

        }
}

 

發佈了35 篇原創文章 · 獲贊 4 · 訪問量 7922
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章