2012-09-04 14 views
11

Caldo per risolvere questo problema e perché si verifica?Dimensioni di memoria consentite di 134217728 byte esauriti

Zend Server Log:

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

Il file main.php non produce alcun errore, se è eseguito direttamente dal browser. Tuttavia, se utilizzo le sue funzioni da un altro file PHO, Zend Log stampa l'errore sopra menzionato.

+0

Hai provato ad aumentare il limite di memoria? – Jurgo

+2

128 MB di memoria utilizzata? Cosa fa * questo * script *? – DaveRandom

+4

Hai tentato di allocare 500 mega di RAM in una sola volta? Bontà, hai provato a leggere in un massiccio CSV in una volta? Se lo hai fatto, leggerli in una riga alla volta e processarli in quel modo. – Fluffeh

risposta

13

Ho anche riscontrato questo problema.

Aumentare le seguenti variabili in modo che la vostra esecuzione della pagina non si fermerà:

  • max_input_time
  • memory_limit
  • max_execution_time
+8

... non tecnicamente * sbagliato * quindi no -1 ma probabilmente un cattivo suggerimento. L'errore originale indica che sei (probabilmente) usando * way * troppa memoria - c'è qualcosa di puzzolente nel tuo codice (loop infinito?). Per dirla diversamente, se la tua pagina consuma così tanta memoria ogni volta che viene eseguita, per l'interesse del tuo ospite spero che tu non abbia molti utenti :) – Ben

6

Prova questo:

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

php.net/memory_limit

Ci vorrà l'utilizzo della memoria illimitato di server.

+24

questo non è il modo corretto per risolvere questo tipo di problemi –

+2

Ma se stai usando la modalità CLI è molto utile. –

+0

@ superarts.org e altri: c'è un modo per modificare le impostazioni della CLI per PHP. Scrivi 'php --ini' e modifica il file giusto. –

10

sia aumentare il limite di memoria in php.ini, o cercare di ottimizzare qualsiasi grande struttura di dati (come gli array) fuori dalla vostra applicazione.

In ogni caso, se l'applicazione PHP utilizza 128 MB di RAM, è probabile che qualcosa stia andando male.

Inoltre, come notato da Fluffeh nei commenti, cosa diavolo stai facendo per utilizzare 500 MB di RAM?

1

Oltre a user1427811 è possibile monitorare e time_limitmemory_limit prima e dopo il download:

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; 
} 
Problemi correlati