解決PHPExcel超時、內存超出的問題

一、PHPExcel 問題

              Yii2.0 自帶PHPExcel模塊,其導出excel簡單方便,但是導出數據量大的時候容易超時、內存使用超出限制。

 以前都是將PHP內存使用限制不斷增大,超時時間不斷增大來應對,但即使如此,web端導出時,瀏覽器依然會超時。

 考慮了Jquery+Ajax+table導出,數據量依然會使瀏覽器卡死,經嘗試可以用以下方法,配合數據庫遊標,速度將大幅提升:           

 header('Content-Type: application/vnd.ms-excel'); 
 header('Content-Disposition: attachment;filename="user.csv"'); 
 header('Cache-Control: max-age=0'); 


// 打開PHP文件句柄,php://output 表示直接輸出到瀏覽器 

$fp = fopen('php://output', 'a');

// 將數據通過fputcsv寫到文件句柄 

 fputcsv($fp, $header); 
 foreach($query->batch(1000) as $models){
      $arr=$models->toArray();
      foreach($arr as $row){
           fputcsv($fp, $row);     
      }
     ob_flush(); 
     flush();
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章