1

大きなデータを Excel 形式の xlsx にエクスポートする際の問題について教えてください。一度に約45000件のレコードを単一のファイルにエクスポートすると、ファイルを保存せずにタイムアウトします。mysql select クエリは、その大きなデータの実行に 21 秒かかっています。以下は、PHP Excel ライブラリを使用してデータを Excel ファイルにエクスポートするコードです。

 $sql2 = "SELECT * FROM Surveys";
 $result2 = mysql_query($sql2);

while($row2 = mysql_fetch_assoc($result2))
{   
$j=$rowscounter+2;
$sheet->setCellValue("A$j",$row2['brandname']);
$sheet->setCellValue("B$j",$row2['productname']);
$sheet->setCellValue("C$j",$row2['sname']);
$sheet->setCellValue("D$j",$row2['smobile']);
$sheet->setCellValue("E$j",$row2['semail']);
$sheet->setCellValue("F$j",$row2['country']);
$sheet->setCellValue("G$j",$row2['city']);
$sheet->setCellValue("H$j",$row2['sdob']);
$sheet->setCellValue("I$j",$row2['age']);
$sheet->setCellValue("J$j",$row2['comment']);
$sheet->setCellValue("K$j",$row2['outletcode']);
$sheet->setCellValue("L$j",$row2['username']);
$sheet->setCellValue("M$j",$row2['datetime']);
$sheet->setCellValue("N$j",$row2['duration']);  
$rowscounter++;
}

 // Rename worksheet
 $sheet->setTitle('Survey-Report');    
 $objPHPExcel->setActiveSheetIndex(0);
 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
 $objWriter->setPreCalculateFormulas(false);
 unlink("Survey-Report.xlsx");
 $objWriter->save('Survey-Report.xlsx');
 echo "ok";

アップデート:

私はすでに set_timout などを試したことを忘れていて、php ファイルに以下のコードを書きました。

set_time_limit(0);
ini_set('memory_limit','2500M');
4

2 に答える 2

0

PHPExcel を使用してレコードをエクスポートするときに、504 ゲートウェイ タイムアウトが発生し続けるという同じ問題がありました。私も試してみset_time_limit(0)ましたが、成功しませんでした。私がやったことは、Apacheのタイムアウトを変更することです。

timoutこれは、httpd.conf ファイルで見つけることができます。

それが役に立てば幸い!

于 2017-10-12T13:46:03.297 に答える