PHP Excel 504 nginx在400条记录时超时.无法导出excel文件


PHP Excel 504 nginx timeout at 400 records. Not able to export the excel file

我正在尝试使用PHP excel库导出excel文件。我可以导出大约400条记录。然而,当我查找大约600条记录时,我看到nginx超时错误。我一直在努力解决这个问题。有人知道如何解决这个问题吗?

到目前为止,我已经使用了php选项,如。。set_time_limit(0);和ini_set('memory_limit','-1');

但仍然无法解决。

请帮忙。提前谢谢。

谢谢你的回复。我联系了我的服务器公司,他们说他们添加了fastcgi_read_timeout 360;到nginx设置。现在它起作用了。

然而,下载启动非常缓慢。我想这是因为PHP Excel库。有人能建议我如何让它更快地响应吗?

Nginx错误,请更改Nginx配置

proxy_read_timeout

查看您的代码只需简单观察即可:

$objPHPExcel->getActiveSheet()->insertNewRowBefore($row,1);

是一个昂贵的操作(并且随着工作表中数据量的增长而变得更加昂贵),您将在foreach()循环的每次迭代中重复该操作。计算需要的行数,然后在循环之前插入新行

对于你正在写的每一个单元格,你都在使用:

$objPHPExcel->getActiveSheet()->...

这需要为每个单元格调用工作簿的getActiveSheet()方法。在循环之前执行一次,将返回的工作表存储在变量(例如$ws)中,然后调用

$ws->setCellValue()

以设置单元格值。

或者使用流畅的界面:

$objPHPExcel->getActiveSheet()->setCellValue('A'.$row, $first_line)
    ->setCellValue('B'.$row, ucwords($dataRow['intlcode']))
    ->setCellValue('C'.$row, ucwords($dataRow['mobile_number']))
    ->setCellValue('D'.$row, ucwords($dataRow['r_datetime']))
    ->setCellValue('E'.$row, $dataRow['fname'])
    ->setCellValue('F'.$row, $dataRow['lname'])
    ->setCellValue('G'.$row, $dataRow['email'])
    ->setCellValue('H'.$row, $dataRow['picture'])
    ->setCellValue('I'.$row, $dataRow['lang'])
    ->setCellValue('J'.$row, $dataRow['interests'])
    ->setCellValue('K'.$row, $dataRow['title'])
    ->setCellValue('L'.$row, $dataRow['company'])
    ->setCellValue('M'.$row, $dataRow['address'])
    ->setCellValue('N'.$row, $dataRow['app_status']);

如果您可以使用fromArray()方法在一次调用中设置行中的所有单元格,那就更好了。

$objPHPExcel->getActiveSheet()->fromArray($dataRow,NULL,'B'.$row);