PHPExcel leads to Gateway Timeout on large files

Topics: User Forum
Mar 14, 2015 at 2:53 AM
Edited Mar 14, 2015 at 3:36 AM
Hello everyone,

I am using PHPExcel to generate large report files for customer orders. The script reads a CSV, inserts them into a database, then re-reads them, does the calculation and then writes the data row by row to a xlsx-file. We talk about 5000 to 7000 rows. The rows are inserted in a for-loop, which loops over all countries customers ordered from.

Doing this sometimes works on my local apache, but running the script on production server causes a "504 Gateway Timeout", after about 10 minutes of loading.

I "managed" to crash my local apache to get some information with xdebug:


The following images are from a run where the script terminated:


And the number of calls:


(What is hidden in this pic: the save-function takes about 46% usage)

As you can see, I call getActiveSheet() very often, because I write data to two different sheets at the same time. I do not do calculations or formulas with PHPExcel, this is done in the script, and PHPExcel writes only plain numbers. After writing all rows, I do some formatting (column width, font, font size, table grids usw.).

I am using the latest version of PHPExcel, 1.8.0.

Specs on the machines I tested the script on (with crashes)
  • my local computer: Apache 2.4.9 with PHP 5.4.27 on Windows 8.1
  • production server 1: Apache 2.4.7 with PHP 5.5.9 on Ubuntu
  • production server 2: Apache ??? with PHP 5.3.3 on Linux (phpinfo() doesn't provide any more information..)
Thank you,