2009-12-30 19 views
6

por alguna razón, mi uno de mis scripts php está ignorando el límite de memoria php.ini o ini_set.Script Php CLI ignorando memory_limit, colisionando a un número mucho más bajo que el límite

Cuando hago un print_r (ini_get_all) muestra el límite de memoria global establecido en 100M (y local para ese asunto), cuando mi script muere en Fatal error: Memoria agotada (asignado 24714304) (intentado asignar 571 bytes)

¿Algún consejo para diagnosticar esto? El servidor tiene 8gigs de memoria y nunca tuvo problemas al ejecutar este script antes.

¿Alguna sugerencia para depurar esto?

Gracias!

Respuesta

5

La causa más común de esto es que generalmente el CLI PHP binario está utilizando un archivo php.ini diferente del esperado. Esto puede ser causado por user permissions, o simplemente diferentes archivos php.ini predeterminados para las versiones instaladas de PHP. Sin embargo, parece que lo ha perfilado un poco y su límite de memoria puede ser correcto dentro de su secuencia de comandos.

En ese caso, es muy posible que haya un límite de memoria dura en los procesos que impone su sistema operativo, en cuyo caso tendrá que averiguar de dónde viene la imposición.

Sugiero echar un vistazo a this thread, ya que el cartel pasó por algo muy similar a su situación.

+0

es posible que tenga razón, puede haber un límite estricto en vigor. no tengo idea de cómo encontrar eso. tal vez pregunte por culpa del servidor! – james

+0

usted es una persona inteligente hice algunas investigaciones sobre los límites de memoria bash echa un vistazo a ulimit -v, que tenía muy limitada mi memoria !!! – james

+0

Agradable, me alegro de que lo haya encontrado. – zombat

0

corto y dulce

ini_set('memory_limit', -1); 

en caso de que desee omitir la depuración

+0

Creo que ya ha pasado ese punto. Su configuración INI ya está en 100M. –

+0

bien lo he hecho pero no funcionó. De hecho, si imprimo mi phpinfo(), mostrará un límite de memoria mucho más alto, y cuando imprima ini_get_all() se muestran los cambios de límite de memoria. – james

5

La memoria virtual para mis procesos que se estaba dura limitado (también un número mucho menor).

Desde un shell bash que hice esto:

ulimit -v (memory_in_bytes, sin paréntesis)

que esto esté arreglado mi problema. dios me encanta stackoverflow

Cuestiones relacionadas