2012-09-04 46 views
11

¿Está caliente para resolver este problema y por qué sucede?Tamaño de memoria permitida de 134217728 bytes agotado

Zend registro del servidor:

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 538798977 bytes) in C:\Program Files (x86)\Zend\Apache2\htdocs\test\modules\main.php on line 3

El archivo main.php no produce ningún error, si se ejecuta directamente desde el navegador. Sin embargo, si utilizo sus funciones desde otro archivo PHO, Zend Log imprime el error mencionado anteriormente.

+0

¿trató de aumentar el límite de la memoria? – Jurgo

+2

128MB de memoria usada? ¿Qué hace * este * script *? – DaveRandom

+4

¿Intentó asignar 500 megas de memoria RAM de una sola vez? Dios, ¿trataste de leer en un CSV masivo a la vez? Si lo hizo, léalos en una línea a la vez y trátelos de esa manera. – Fluffeh

Respuesta

13

También he explicado este problema.

Aumenta las siguientes variables para que su ejecución de la página no se detendrá:

  • max_input_time
  • memory_limit
  • max_execution_time
+8

... no técnicamente * mal * así que no -1 pero probablemente sea una mala sugerencia. El error original indica que estás (probablemente) usando * modo * demasiada memoria: hay algo maloliente en tu código (¿bucle infinito?). Para decirlo de otra manera, si tu página consume tanta memoria cada vez que se ejecuta, por el bien de tu anfitrión con suerte no tienes muchos usuarios :) – Ben

6

Prueba esto:

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

php.net/memory_limit

Se llevará uso de memoria ilimitada de servidor.

+24

esta no es la manera correcta de resolver este tipo de problemas –

+2

Pero si está ejecutando el modo CLI, es muy útil. –

+0

@ superarts.org y otros: hay una forma de cambiar la configuración de la CLI para PHP. Escriba 'php --ini' y edite el archivo correcto. –

10

aumente el límite de memoria en php.ini, o tratar de optimizar cualquier estructura de datos grande (como matrices) fuera de su aplicación.

En cualquier caso, si su aplicación PHP está usando 128MB de RAM, es probable que algo vaya mal.

Además, como señaló Fluffeh en los comentarios, ¿qué diablos está haciendo para utilizar 500MB de RAM?

1

Además de user1427811 puede supervisar time_limit y memory_limit antes y después de descargar el archivo:

function custom_put_contents($source_url='',$local_path=''){ 

    $time_limit = ini_get('max_execution_time'); 
    $memory_limit = ini_get('memory_limit'); 

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

    $remote_contents=file_get_contents($source_url); 
    $response=file_put_contents($local_path, $remote_contents); 

    set_time_limit($time_limit); 
    ini_set('memory_limit', $memory_limit); 

    return $response; 
} 
Cuestiones relacionadas