oct
15
Dans Tutoriaux par Benjamin Agullana (1 859 lecteurs)
1 étoile2 étoiles3 étoiles4 étoiles5 étoiles
Loading ... Loading ...

Aujourd’hui je vais étaler 3 façons très simple pour changer la valeur de « memory_limit« , indispensable dans l’exécution de gros script ou de grosses requêtes SQL. Les 3 astuces qui seront présentées sont toutes 3 différentes mais permettent d’arriver au même résultat. Je présenterai aussi les avantages de chacune.

Ah oui mais au fait pourquoi cet article ? Tout simplement pour tout ceux qui en on marre des erreurs telles que :

PHP Fatal error: Allowed memory size of XXX bytes exhausted (tried to allocate YYY) in un_fichier.php

Allez, c’est par là que ca se passe !

En fait, si vous obtenez une erreur de ce genre c’est tout simplement car votre script est trop gros pour votre serveur Apache. Il faut savoir que d’origine, memory_limit est définie à 8MB,dans le fichier php.ini (c’est dans ce fichier que sont définies toutes les variables d’Apache) ,ce qui est relativement peu quand on a une grosse base de données par exemple et que l’on veut exécuter des requêtes importantes.

La solution ? Augmenter cette valeur !

1ere façon : modifier php.ini

Si vous avez accès au fichier php.ini de votre serveur ouvrez-le avec votre editeur de texte préféré (en local par exemple, avec WAMP, il se trouve dans wamp/Apache2/bin/php.ini).

Là, faites une recherche (CTRL + F généralement) avec le mot clé « memory_limit« . Une fois le mot trouvé, remplacé la valeur par :

memory_limit = 32M ; Maximum amount of memory a script may consume (8MB)

(ce qui suit le ; est un commentaire, on s’en fiche ;) ). 32M est une valeur raisonnable.

Mais vous pouvez ajustezr la valeur à vos souhaits, cependant sachez que plus vous réglerez une valeur élevée plus votre site peut s’exposer à du danger. En effet, avec cette méthode vous permettez l’exécution de gros script ou grosses requêtes SQL sur tout votre site, du coup si une personne malveillante voulez soutirer un maximum de données elle pourrait le faire.

Pensez à relancer votre serveur Apache pour que les modifications prennent effet !

2eme façon : modifier .htaccess

Cette méthode est souvent nécessaire si vous n’avez pas accès au fichier php.ini (la plupart du temps c’est le cas si vous êtes chez un hébergeur). La solution est de modifier la valeur du memory_limit en insérant une petit ligne de code dans votre fichier .htaccess (si vous n’en n’avez pas, créez-en un avec votre éditeur de texte, renommez le .htaccess).

Je vous conseille de créer ce fichier spécifiquement dans le dossier où se trouve le fichier qui détient le script trop volumineux et donc auteur de votre visite sur mon blog (j’espère que vous me suivez :p ).

Bref voici la ligne à ajouter dans le fichier :

php_value memory_limit 64M

Ce changement sera local, et s’appliquera donc seulement à l’ensemble des script présents dans les fichiers enfants de votre dossier contenant le fichier .htaccess (relisez bien c’est compréhensible, si si, je vous assure ! ).

3eme façon : changer memory_limit dans votre script php !

Cette dernière méthode est la mieux adaptée à mon sens, car c’est la moins dangereuse. En effet, nous allons allouer plus de place à l’exécution d’un script bien précis puisque nous allons insérer une ligne de code PHP qui va permettre de modifier la valeur de la variable seulement à l’exécution dudit script ! De plus, vous pouvez la faire sans avoir besoin des permissions d’accès au php.ini ou .htaccess.

Voici le bout de code (à placer dans votre fichier php, au dessus du satané script volumineux) :

ini_set(‘memory_limit’,'64M’);

Voilà c’est tout pour aujourd’hui, un grand merci à MDLog:/sysadmin. Si vous allez la moindre question posez là !

Articles relatifs...

Commentaires

DanteNo Gravatar on 26 janvier, 2009 at 18:48 #

Moi qui était désespéré à l’idée de devoir abandonner le script que je concocte depuis des jours. Quelle joie \o/
Merci pour le renseignement ;)


xavier EssonneNo Gravatar on 20 mai, 2009 at 10:50 #

Bonjour , j’ai cru lire un jour qu’il existait des plugins pour améliorer la vitesse de lecture des sites une sorte de convertisseur de page php en HTLM unique


xavier EssonneNo Gravatar on 20 mai, 2009 at 10:52 #

bonjour j’ai cru voir un jour des plugin qui pouvaient convertir et stocker des pages php en pages htlm unique par url.

est ce que cela cause à certains ?


Benjamin AgullanaNo Gravatar on 20 mai, 2009 at 11:20 #

Euh… Je pense pas qu’un tel truc. Tu peux toujours afficher les site en cache (quand tu fais une recherche Google tu peux afficher le cache) ca fait à peu près l’équivalent de ce que tu viens de dire.

Le problème c’est que le PHP c’est dynamique et ca permet de charger du contenu au jour le jour sur un site, je vois pas comment on pourrait stocker la page en HTML (le temps de la stocker et de vérifier si il y a une MAJ sur la page ca doit etre aussi long que de charger la page normalement).

Enfin je sais pas après, peut-être que ca existe.


Post a Comment
Name:
Email:
Website:
Commentaires:
Security Code:

free website monitoring