los scripts PHP de línea de comandos están haciendo caso omiso php.ini y ini_set ( 'memory_limit', ...) directivas

StackOverflow https://stackoverflow.com/questions/1751719

Pregunta

Estoy frente a la "Fatal error: Fuera de memoria (asignado 30.408.704) (tratado de asignar 24 bytes) ..." común PHP Fatal error. Páginas servidas a través de Apache no exhiben este comportamiento.

He intentado lo siguiente:

  1. El aumento de la memory_limit en php.ini a un valor mucho más grande.
  2. El aumento de memory_limit dentro de la propia secuencia de comandos a través de llamadas a ini_set('memory_limit', -1), ini_set('memory_limit', '-1'), ini_set('memory_limit', 100000000), ini_set('memory_limit', '128M'), etc.
  3. unset()ing matrices y objetos que no sean necesarios para fomentar el recolector de basura para liberar memoria.
  4. Envía un mensaje al proveedor de alojamiento web. Normalmente son muy capaces y bien informado, pero no han sido capaces de ayudarme con este problema tampoco.
  5. He tratado de forma explícita que incluye un archivo php.ini utilizando el indicador de línea de comandos -c a recoger a mano los archivos php.ini específicos con diversos valores.
  6. He tratado de establecer memory_limit en php.ini utilizando ambas cifras brutas de bytes y valores como el 64M, 128M, etc.
  7. El proveedor de alojamiento era capaz de ejecutar la secuencia de comandos como root sin problemas, pero experimenta el mismo problema que hago cuando se ejecuta usando mi usuario no root. Tal vez hay algún tipo de problema de permisos involucrados?

Independientemente de lo que intento, el mensaje de error es el mismo. Parece que mis scripts de línea de comandos están haciendo caso omiso a los cambios memory_limit.

tiendo a tratar de asegurarse de que mis guiones son eficiente de la memoria, pero actualmente estoy necesitando para analizar grandes cantidades de HTML a través de simple HTML DOM y es en el analizador que estoy experimentando problemas de memoria. En un intento de reducir el consumo de memoria de la escritura, He intentado usar DOMDocument lugar. Esto no ayuda tampoco. De hecho, el error de falta de memoria ahora es disparado en otra parte de la secuencia de comandos.

Mi pregunta: ¿alguien ha experimentado esto o un problema similar? ¿Tiene alguna recomendación?

Gracias.

¿Fue útil?

Solución

Resulta que el problema fue causado por la protección de bombas tenedor cáscara está habilitado en el servidor que estaba colocando un límite de memoria duro en todos los scripts de línea de comandos. Esto ha sido posible gracias a mi proveedor de alojamiento web sin mi conocimiento.

Otros consejos

PHP en su CLI puede ser el uso de un diferentes php.ini para su PHP Apache. probar un phpinfo() y comprobar su uso del archivo INI usted piensa su uso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top