2012-08-09 42 views
40

Tengo un problema al aumentar el límite de memoria para PHP como módulo de Apache.¿Cómo aumentar el límite de memoria para PHP de más de 2 GB?

si pongo siguiente directiva de configuración de Apache, que funcionan bien:

php_value memory_limit 1.99G 

Pero más de 2 GB no funcionan, es restaurar este valor a 128 MB.

¿Cuál es el problema aquí? Necesito más memoria para algunas tareas relacionadas con PDF.

El servidor es Debian 2.6.32-5-amd64 # 1 SMP, PHP 5.3.3-7 + squeeze13 con 12 GB de RAM física.

+7

procesos de Apache 2G ! Guau. – Ray

+0

Quizás debas dejar la configuración de apache como predeterminada y 'ini_set ('memory_limit', -1);' solo en el archivo que necesites. Ve si eso funciona. – JRomero

+0

El uso de MB en lugar de GB no cambia nada. Creo que hay algún otro límite, tal vez en algún lugar de la configuración de Apache. Además, como sé que memory_limit no se puede cambiar en tiempo de ejecución y el valor predeterminado es 128 MB. Tal vez pueda configurar esto en php.ini principal, pero no quiero que otro VHOST tenga una configuración tan grande, así que lo uso por VHOST. – mikikg

Respuesta

32

¿Ha intentado utilizar el valor en MB?

php_value memory_limit 2048M 

También intente edición de este valor en php.ini no Apache.

+1

sí, debe estar en php.ini. Por alguna razón, no trabaje más de 2G en la configuración de Apache (trabaje sin problemas otros valores inferiores). – mikikg

+0

hola ... en realidad estoy usando zend entonces, ¿cómo incrustar la memoria de zend? –

+0

¿Esto quiere decir que prácticamente no hay límite en la cantidad de memoria que PHP puede consumir, siempre que tengas suficiente RAM disponible? – dotslash

1

de entrada lo siguiente a su configuración de Apache:

php_value memory_limit 2048M 
3

Debe tener un sistema operativo de 64 bits en hardware que admita SO de 64 bits, versión de Apache de 64 bits y lo mismo para PHP. Pero esto no garantiza que las funciones que funcionan con PDF puedan usar tamaños tan grandes de memoria. Es mejor que no cargue todo el archivo en la memoria, divídalo en fragmentos o use funciones de archivos para buscarlo sin cargarlo en la memoria RAM.

+0

Ya es de 64 bits: Linux myHOST 2.6.32-5-amd64 # 1 SMP Lun 3 Oct 03:59:20 UTC 2011 x86_64 GNU/Linux – mikikg

+0

¿Qué pasa con Apache? – Timur

+0

Apache es la versión de stock 2.2.16-6 + squeeze7 de Debian. Creo que es un compilado de 64 bits. – mikikg

26

Sugeriría que está viendo el problema con la luz incorrecta. La pregunta debería ser '¿qué estoy haciendo que necesite memoria 2G dentro de un proceso de apache con Php a través del módulo apache y esta herramienta es la más adecuada para el trabajo?'

Sí, puedes enganchar un cohete en un ford pinto, pero probablemente no sea la solución adecuada.

Independientemente, voy a proporcionar el cohete si realmente lo necesita ... puede agregarlo a la parte superior de la secuencia de comandos.

ini_set('memory_limit','2048M'); 

Esto lo configurará solo para el script. Aún necesitará decirle a apache que permita mucho para un script php (creo).

+1

Lo sé, el script no es mío, es un convertidor html2pdf y la entrada a él es una página HTML muy grande. – mikikg

+0

@mikikg vea la respuesta anterior – Ray

+0

¡Solución correcta y explicación correcta! Me encontré con el límite de memoria de solo 1 script, mi sitemap, que indexaba demasiadas páginas (que estaban almacenadas en el DB). La solución perfecta, el mapa del sitio tiene un límite de memoria alto, todo lo demás permanece intacto. – HoldOffHunger

12

Para límite de memoria ilimitada establecer -1 en memory_limit variables:

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

Es bueno saber que la memoria ilimitada es posible, pero no creo que vaya a utilizar esto en mi código pronto. =) – HoldOffHunger

Cuestiones relacionadas