我正在尝试使用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);