Error fatal: Tamaño de memoria permitido de 134217728 Bytes agotado (CodeIgniter + XML-RPC)

Tengo un montón de sistemas de punto de venta (TPV) de clientes que envían periódicamente nuevos datos de ventas a una base de datos centralizada, que almacena los datos en una gran base de datos para la generación de informes.

El TPV cliente está basado en PHPPOS, y he implementado un módulo que utiliza la librería estándar XML-RPC para enviar los datos de ventas al servicio. El sistema del servidor está construido sobre CodeIgniter, y utiliza las librerías XML-RPC y XML-RPCS para el componente de webservice. Siempre que envío muchos datos de ventas (tan solo 50 filas de la tabla de ventas, y filas individuales de sales_items pertenecientes a cada artículo dentro de la venta) obtengo el siguiente error:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 54 bytes)

128M es el valor por defecto en php.ini, pero supongo que es un número enorme para romper. De hecho, incluso he probado a poner este valor a 1024M, y lo único que hace es que el error tarde más tiempo en producirse.

En cuanto a los pasos que he dado, he intentado desactivar todo el procesamiento en el lado del servidor, y lo he manipulado para que devuelva una respuesta enlatada independientemente de la entrada. Sin embargo, creo que el problema radica en el envío real de los datos. Incluso he probado a desactivar el tiempo máximo de ejecución del script para PHP, y sigue dando errores.

ini_set('memory_limit', '-1'); anula el [límite de memoria PHP] por defecto (http://php.net/memory_limit).

Comentarios (17)

Es muy fácil que se produzcan fugas de memoria en un script PHP - especialmente si se utiliza una abstracción, como un ORM. Intente usar Xdebug para perfilar su script y averiguar a dónde fue a parar toda esa memoria.

Comentarios (6)

Para los usuarios de Drupal, esta respuesta de Chris Lane's de:

ini_set('memory_limit', '-1');

funciona pero hay que ponerlo justo después de la apertura

<?php

en el archivo index.php del directorio raíz de su sitio.

Comentarios (0)