2016-03-07 5 views
0

J'ai une fonction particulièrement gourmande en mémoire que je voudrais (juste pendant que cette fonction est en cours d'exécution) augmenter la mémoire autorisée pour qu'elle se termine.Utilisation de ini_set ('memory_limit') dans une fonction php

Est-ce une mauvaise pratique d'utiliser ini_set('memory_limit' , 1024M) dans une fonction php et une fois la fonction terminée, reviendra-t-elle à la valeur par défaut?

Je sais que c'est une valeur élevée à utiliser. C'est un serveur dedi et a beaucoup de jus.

exemple serait:

function run_Cron_Processes() { 
    ini_set('memory_limit', 1024M'); 
    memoryIntensive1(); 
    memoryIntensive2(); 
    memoryIntensive3(); 
    //return to default m limit 
} 
+0

ini_set ('memory_limit', 1024M) Cette limite de mémoire sera définie pour cette requête sur cette page spécifique uniquement –

Répondre

0
$oldLimit = ini_get('memory_limit'); 
ini_set('memory_limit', '1024M'); 
(...) 
ini_set('memory_limit', $oldLimit); 

Mais je pense qu'il est inutile: à la fin de l'exécution du script, la limite de mémoire est remise à la valeur par défaut.

0

La valeur reviendra à la valeur par défaut après l'exécution de votre script.

Vous pouvez également définir votre limite à -1 afin de dire à PHP que votre script peut utiliser toute la mémoire nécessaire.

0

Je ne dirais pas que c'est une mauvaise pratique, vous devez faire ce que vous avez à faire. Si vous avez besoin de plus de mémoire, c'est la façon de le faire. Vous devrez peut-être également augmenter max_execution_time. Ceci étant dit, vous voudrez peut-être vérifier vos fonctions 'memoryIntensive', et optimiser les choses là-bas.