亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網
    最全最豐富的資訊網站

    php如何實現百萬級數據快速導出CSV

    在php中,可以使用了服務器的緩存來實現百萬級數據快速導出CSV,今天就帶大家學習一下快速導出csv的方式,有需要的可以參考參考。

    php如何實現百萬級數據快速導出CSV

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

    實現:

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

    1:創(chuàng)建測試表

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

    2:加入測試數據

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

    然后執(zhí)行如下命令批量添加數據

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

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

    二: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);//循環(huán)次數 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萬條數據就刷新緩沖區(qū)     ob_flush();     flush(); } exit;

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

    贊(0)
    分享到: 更多 (0)
    網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號