652 votos

PHP: Fatal Error: Allowed Memory Size de 134217728 Bytes agotan (CodeIgniter + XML-RPC)

Tengo un montón de cliente de punto de venta (POS) de los sistemas que enviar periódicamente nuevos datos de ventas para una base de datos centralizada, que almacena los datos en una gran base de datos para la generación de informes.

La cliente POS se basa en PHPPOS, y he implementado un módulo que utiliza el estándar XML-RPC biblioteca para enviar los datos de ventas para el servicio. El sistema de servidor está construido sobre CodeIgniter, y utiliza el XML-RPC y XML-RPC bibliotecas para el webservice componente. Siempre me envía una gran cantidad de datos de ventas (tan poco como 50 filas de la tabla de ventas, y cada una de las filas de sales_items correspondientes a cada elemento dentro de la venta) me sale el siguiente error:

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

128 M es el valor predeterminado en php.ini, pero supongo que es un número enorme de romper. De hecho, incluso he tratado de establecer este valor a 1024M, y todo lo que hace es tomar un tiempo más largo para el error.

Como para los pasos que me he tomado, he intentado desactivar todo el procesamiento en el lado del servidor, y han manipulado para devolver una respuesta enlatada, independientemente de la entrada. Sin embargo, creo que el problema radica en la transmisión de los datos. Incluso he intentado desactivar el máximo de secuencia de comandos de tiempo de ejecución de PHP, y aún de los errores. Muchas gracias por su ayuda!

733voto

Jeff Puntos 718

Personas, cambiando el memory_limit por ini_set('memory_limit', '-1'); no es una solución en absoluto.

Por favor no hagas eso. Obviamente php tiene una pérdida de memoria en algún lado y está diciendo al servidor que usa toda la memoria que desea. El problema no se ha solucionado en absoluto. Si usted controlar su servidor, usted verá que ahora probablemente está utilizando en la mayoría de la RAM y cambiar incluso en el disco.

Probablemente deberías probar rastrear el error exacto en tu código y arreglarlo.

210voto

Chris Lane Puntos 1697

ini_set('memory_limit', '-1');reemplaza el valor límite de memoria del PHPpor defecto.

64voto

troelskn Puntos 51966

Es muy fácil llegar a pérdidas de memoria en un script PHP - especialmente si utilizas abstracción, como un ORM. Intente usar Xdebug perfil tu guión y averiguar dónde se fue todo ese recuerdo.

13voto

sigmapi13 Puntos 349

Para usuarios de Drupal, respuesta de este Chris Lane de:

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

obras pero necesitamos ponerlo justo después de la apertura

<?php

etiqueta en el archivo index.php en el directorio raíz de tu sitio.

9voto

AboBander Puntos 116

He arreglado este fallo. Ver: http://codeigniter.com/forums/viewthread/143001/

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X