PHPExcel Memory Leak, so geht es noch am besten..

Erstellt von Arne | Erstellt in Software- & Webentwicklung | Am 04-09-2012

0

Vor ganz langer Zeit hatte ich ja mal bereits über die Verwendung von PHPExcel zum Erzeugen von Excel Dateien aus PHP geblogged.

Nun war es in der Firma mal wieder an der Zeit einen Export zu bauen, tja das Problem: 12.000 Zeilen und knapp 150 Spalten (-: Da hat dann der Arbeitsspeicher nicht mehr so mitgespielt wie wir das wollten. Zum Berechnen wie viel RAM ihr so braucht gilt folgende Rechnung: Anzahl der Zellen * 1 KiloByte.

Die bisher beste Lösung, in Hinsicht auf den Verbrauch von Arbeitsspeicher sieht jetzt so aus (nach einigen Experimenten):

 

Was sind die Fallstricke beziehungsweise worauf achten?

  • Nur die Caching-Methoden SQLITE/SQLITE3 schreiben nicht in den RAM
  • Der Cache muss VOR dem Erzeugen des PHPExcel Objects gesetzt sein
  • Vermeiden von fetchAll(), lieber die Zeilen einzeln aus der Datenbank besorgen
  • Arbeitsspeicher erhöhen
  • Werte in die Zeile mit ->fromArray(); schreiben

Der Arbeitsspeicher kann an 3 Stellen gesetzt werden.

PHP Script:

.htaccess Datei

php.ini

Ganz klar muss man aber sagen,man kann wohl optimieren so viel man möchte, aber um die 1 KiloByte pro Zelle Geschichte kommt man nicht rum bei der Verwendung von PHPExcel 1.7.7  (-:

Weitere spannende Beiträge zum Thema PHPExcel und dem Arbeitsspeicher / Memory – Leaks

Wir wollen doch keine Leichen kommentieren? Falls doch - einfach ne kurze Mail bitte.