aumentar apache2handler php apache memory-limit

php - apache2handler - memory limit



LĂ­mite de memoria superior para PHP/Apache (8)

¿Qué versión de PHP estás usando?

La variable memory_limit está, o estaba, contenida en un entero de 32 bits, por lo que no puede ir por encima de 2GB.

Consulte: http://bugs.php.net/bug.php?id=39132&edit=1

Desde el comentario final sobre ese informe de error, podría ser la rutina que traduce la forma legible por el ser humano a un número, intente ponerlo en dígitos.

Recibo el error cuando ejecuto mi script PHP ....

Fatal error: Out of memory (allocated 1827405824) (tried to allocate 88800 bytes)

He añadido esta línea a mi script PHP ...

ini_set("memory_limit","3000M");

Esta declaración parece controlar correctamente el uso de la memoria, pero no parece poder obtenerla por encima de aproximadamente 1,8 GB. Es como si el límite de memoria superior se restringiera en otro lugar. También he añadido a la php.ini ...

memory_limit = 3000M

¿Alguien sabe si la memoria está restringida en otro lugar?

Estoy ejecutando un servidor local con Xampp. Tengo Windows 7, 64 bits con 4GB de RAM. Mi script usa la biblioteca de imágenes GD de PHP y recibo el error al intentar asignar una referencia de imagen con ImageCreateTrueColor ().

(Sé que esto es una gran cantidad de memoria, pero esto es solo una secuencia de comandos, y es mucho más fácil hacerlo de esta manera).

Gracias.

Actualizar....

@elusive @Orbling Espero que todos estén aburridos con esta pregunta, pero aquí está el código simplificado que ilustra el problema.

<?php ini_set("memory_limit","4000000000"); echo "ini_get = " . ini_get(''memory_limit'') . "<br>/n"; echo "memory_get_usage = " . memory_get_usage(true) . "<br>/n"; $bigImageHandle = imagecreatetruecolor(22200, 24800); //this is line 5 ?>

Salida del navegador ...

ini_get = 4000000000 memory_get_usage = 524288 Fatal error: Out of memory (allocated 1843396608) (tried to allocate 88800 bytes) in E:/User/My_Webs/experiments/houseshunting/temp/osMaps/t1.php on line 5

Probé esto con un conjunto más pequeño de mosaicos y la memoria utilizada por imagecreatetruecolor () y estimo que necesito 2.7GB


Compruebe su configuración de Apache (por ejemplo, httpd.conf). Es probable que haya una directiva RLimitMEM que limite la memoria y permita que los procesos hijos manejen las solicitudes.

Por lo tanto, puede establecer su límite de PHP todo lo que desee, si Apache genera el proceso con un límite de memoria, no puede exceder eso.

Si está en un servicio alojado y tiene un servidor compartido, es probable que no tenga acceso a esta configuración y necesite trabajar con su proveedor. Como puede ver, es la configuración que se aplica a todo el servidor ... probablemente no vaya a hacer que cambien esto. Por otra parte, si está buscando generar más procesos de 1.5Gig, debe resolver el problema de una manera diferente (otros lo han sugerido) o obtener un servidor dedicado de algún tipo (por ejemplo, EC2).

Por ejemplo:

/usr/local/apache/conf #RLimitMEM 85643200 104857600 # Limit to: 80Mb / process, 100Mb total RLimitMEM 134217728 537395200 # Limit to: 128Mb / Process, 512Mb total


Es probable que el problema se deba a la ejecución de apache y php de 32 bits. Intente actualizarlos a binarios de 64 bits y vea si eso soluciona el problema.


Prueba esto

set_time_limit(300); ini_set(''memory_limit'', ''20000M'');


Prueba esto:

#php_value memory_limit 300M #php_value upload_max_filesize 200M #php_value post_max_size 200M #php_value max_execution_time 80000 #php_value max_input_time 80000


Se está ejecutando en un sistema operativo de 64 bits, pero es probable que Apache y PHP aún sean de 32 bits. Si estás usando mod_php, apache sería el factor limitante aquí.

Los procesos de 32 bits tienen un límite de 2GiB de RAM a menos que haya utilizado el conmutador / 3GB y el software tenga conocimiento de la compatibilidad con 3GB.

Eso todavía deja alrededor de 200 MiB que parece no ser utilizado, pero es lo suficientemente pequeño como para que lo puedan usar varias bibliotecas que deben cargarse en la memoria.

Por lo que sé, el uso de la biblioteca no se mostrará en la memoria comprometida, pero aún así cuenta hacia el límite de 2GiB (al igual que la memoria del dispositivo cuenta hacia el límite de 4GiB en las ventanas de 32 bits. hasta por debajo de 2GiB de RAM utilizable).

¿La solución más probable? Instale un PHP de 64 bits y luego envíelo a esa llamada (utilizando una llamada al sistema (), tal vez)


Usando Acquia Dev Desktop, tuve muchos bloqueos de límite de memoria.

Después de haber aumentado el límite de memoria en PHP.ini.

php_value memory_limit 1024M php_value max_execution_time 3000

Este problema fue menos frecuente pero sigue ocurriendo (especialmente con Feature Recreate)

En mi httpd.conf aumenté el StackThread a 16M

ThreadStackSize 16*1024*1024

Y resolvió el problema de memoria de bloqueo. Espero que pueda ayudar


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