Al utilizar PHPExcel , la librería de generación de archivos Excel desde el lenguaje de programación php..
Simplemente utilizando un bucle de php que lea en torno a unos 2000 registros de una base de datos en mysql y los vuelque a un archivo xls de Excel , obtenía el siguiente error php excel Fatal error: Allowed memory size.
Al indicar Allowed Memory Size ya nos daba una pista de donde debíamos buscar la solución. Efectivamente, se superaba la memoria admitida para cargar en memoria los 2000 registros y posteriormente volcarlos a un archivo excel.
Para solucionarlo, he leído que añadiendo al inicio del script php, la directiva ini_set(“memory_limit”,”100M”); se solucionaba, y así es. Yo he añadido 100Mb, que para un script que se ejecuta una única vez, evita problemas de sobreexceso de memoria utilizada.
Con esta directiva se soluciona el problema y ya se genera el archivo excel correctamente.
Es una solución aceptable, como se podría ir descargando el fichero mientras se genera? He notado que en algunas descargas que realizo no aparece el tamaño del fichero hasta que se ha descargado porque creo que lo va descargando mientras se genera liberando el buffer de memoria y pemitiendo así no llegar a un memory limit. Alguien sabría como hacerlo?