PHPExcel 发生超时

标签 php mysql memory timeout phpexcel

请帮助我解决将大数据导出到 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');

最佳答案

您可以在脚本顶部添加:

set_time_limit (0);

这将禁用默认的 30 秒 php 超时。

或者您可以添加自定义秒数,请参阅 set_time_limit()

关于PHPExcel 发生超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240104/

相关文章:

php - 如何让unix时间戳显示超过24小时的时间?

mysql - MySQL 中的 BIT 和 TINYINT 有什么区别?

mysql - 我可以通过 server_ip/phpMyadmin 连接到数据库,但无法通过 xampp 连接

创建巨大对象后,Python 在函数结束时挂起数小时

c++ 创建新对象时 : iterator not incrementable

javascript - 初学者 : Extension of file

php - 对多行求和并按列分组更新。 (Laravel Eloquent )

mysql - 事件在 mysql 中不能正常工作?

memory - Varnish 6 LTS/w CentOS 8 不遵守内存限制?

php - 如何在 PHP 无限循环中更新页面变量?