PHPExcel花费太多时间

我正在尝试使用PHPExcel生成Excel文件。 一切都很好,但它花费了太多的时间,我已经改变了max_execution_time和memory_limit,但仍然花费超过7分钟执行20000 X 12(1.4M)。 我必须通过大小1000000 X 12生成Excel。请给我一个解决scheme,我不得不搞乱我的查询只是忽略了。

//include files `ini_set('max_execution_time', 600); ini_set('memory_limit', '128M'); error_reporting(E_ALL); ini_set('display_errors', 1); include_once "../CMSWebService/config.php"; include 'PHPExcel/PHPExcel/IOFactory.php'; include 'PHPExcel/PHPExcel.php'; //Query $query = "SELECT SQL_CALC_FOUND_ROWS LastUpdate AS `Date`, partnres.PartnerIVRID AS PartnerIVRID, partnres .Category AS Category, partnres.BATPartnerCode AS BATPartnerCode , partnres.OutletName AS OutletName, partnres.RetailerName AS RetailerName, partnres.Region AS Region , partnres.Area AS Area , partnres.Territory AS Territory, partnres.TSALocation AS TSALocation, partnres.PartnerManagerNumber AS PartnerManagerNumber, product.Compliance_Status AS Compliance_Status FROM tbl_partners AS partnres JOIN tbl_partner_compliance_info AS product ON product.PartnerIVRID = partnres.PartnerIVRID UNION SELECT LastUpdate AS `Date`,partnres.PartnerIVRID AS PartnerIVRID, partnres.Category AS Category, partnres .BATPartnerCode AS BATPartnerCode , partnres.OutletName AS OutletName, partnres.RetailerName AS RetailerName, partnres.Region AS Region, partnres.AREA AS Area, partnres.Territory AS Territory, partnres.TSALocation AS TSALocation, partnres.PartnerManagerNumber AS PartnerManagerNumber,product.Compliance_Status AS Compliance_Status FROM tbl_partners AS partnres JOIN tbl_partner_products_info AS product ON product.PartnerIVRID= partnres .PartnerIVRID ORDER BY `Date` ASC LIMIT 0,20000"; $res = Sql_exec($remoteCN,$query); //Excel $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $rowCount = 1; $customTitle = array ('Date','PartnerIVRID','Category','BATPartnerCode','OutletName','RetailerName','Region','Area','Territory','TSALocation','PartnerManagerNumber','Status'); $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $customTitle[0]); $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $customTitle[1]); $objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, $customTitle[2]); $objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount, $customTitle[3]); $objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount, $customTitle[4]); $objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowCount, $customTitle[5]); $objPHPExcel->getActiveSheet()->SetCellValue('G'.$rowCount, $customTitle[6]); $objPHPExcel->getActiveSheet()->SetCellValue('H'.$rowCount, $customTitle[7]); $objPHPExcel->getActiveSheet()->SetCellValue('I'.$rowCount, $customTitle[8]); $objPHPExcel->getActiveSheet()->SetCellValue('J'.$rowCount, $customTitle[9]); $objPHPExcel->getActiveSheet()->SetCellValue('K'.$rowCount, $customTitle[10]); $objPHPExcel->getActiveSheet()->SetCellValue('L'.$rowCount, $customTitle[11]); $rowCount=2; while($row = Sql_fetch_assoc($res)){ $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['Date']); $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['PartnerIVRID']); $objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, $row['Category']); $objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount, $row['BATPartnerCode']); $objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount, $row['OutletName']); $objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowCount, $row['RetailerName']); $objPHPExcel->getActiveSheet()->SetCellValue('G'.$rowCount, $row['Region']); $objPHPExcel->getActiveSheet()->SetCellValue('H'.$rowCount, $row['Area']); $objPHPExcel->getActiveSheet()->SetCellValue('I'.$rowCount, $row['Territory']); $objPHPExcel->getActiveSheet()->SetCellValue('J'.$rowCount, $row['TSALocation']); $objPHPExcel->getActiveSheet()->SetCellValue('K'.$rowCount, $row['PartnerManagerNumber']); $objPHPExcel->getActiveSheet()->SetCellValue('L'.$rowCount, $row['Compliance_Status']); $rowCount++; } $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); $name = 'BAT_REPORT_'.date('Ymd H:i:s').'.xlsx'; $objWriter->save("$name"); $file_location = $name; //Download header('Content-disposition: attachment; filename="'.$name); header('Content-type: application/xlsx'); header('Content-Length: ' . filesize($file_location)); readfile($file_location); `