PHP的Excel 504 Nginx超时在400条logging。 无法导出excel文件

我想用PHP excel库导出一个excel文件。 我可以导出约400条logging。 但是,当我去更多的约600个logging,我看到nginx超时错误。 我一直在试图解决这个问题。 有谁知道如何解决这个问题?

到目前为止,我已经玩过php选项,如.. set_time_limit(0); 和ini_set('memory_limit',' – 1');

但仍然无法解决它。

请帮忙。 提前致谢。

感谢您的答复。 我联系了我的服务器公司,他们说他们已经添加了fastcgi_read_timeout 360; 到nginx设置。 现在它工作。

但是,下载启动非常缓慢。 我猜是因为PHP的Excel库。 任何人都可以build议我怎样才能更快地回应?

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);