Tom's Guide > Forum > Programmation > Maîtrise de la taille mémoire engendrée par un Script PHP => Fatal error: Allowe
Maîtrise de la taille mémoire engendrée par un Script PHP => Fatal error: Allowe - Programmation
TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

A l'exécution d'un script, j'ai une erreur fatale d'allocation mémoire =>
Fatal error: Allowed memory size of XXX bytes exhausted (tried to allocate yyy bytes) in …


On me dit qu'il s'agit d'une erreur indiquant que la mémoire aIlouée (7 Mo ?) à un script est dépassée !

1. Je ne traite que des images inférieures à 300 Ko
2. Je crée la mémoire pour une image ( imagecreatefromjpeg($p_path) )
3. Je traite l’image ( calcul de redimensionnement en fonction de la taille de l’ecran client)
4. J’édite l’image
5. Je rend dispo la mémoire ( imagedestroy() )
6. je recommence en 2 jusqu’avoir traité toutes mes images (une dizaine en général)

Même si dans la taille allouée la taille des images doit être prise en compte, ce qui ne me semble pas être le cas, 10x300Ko = 3 Mo + le texte, ça ne fera pas 7Mo !!!

Qu'est ce qui fait partie ou non d'un script (images, texte seul ...) ?
Est ce que cette limite est spécifique à l'hébergeur ?
Dépend elle du pack d'hébergement ?
Comment faire pour maîtriser ces dépassements ?

Merci de vos réponses

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

tout dépend, si ton site se trouve chez toi et que tu as apache, un simple changement des settings suffisent a augmenter la memoire alloué a chaque script.
si c'est chez ton hebergeur, il va falloir t'y adapter.

Répondre à Resurectin

Merci,

Mais comment je fais pour analyser mon script et trouver l'espace mémoire utilisé.

Comment réduire cet espace mémoire utilisé ?

Répondre à zakuli

Salut,

Le problème n'est pas lié au poids de ton fichier, mais à ses dimension ! Pour pouvoir modifier ton image, le script à besoin de la récupérer en bitmap (les pixels un à un avec leur couleurs) du coup, une image de 1600x1200 ca fait 1600x1200x3 = 5 760 000 octets soit 5.5Mo environ. Après je ne sait pas comment gd gère les images, mais modifier 2millions de pixels un à un ca doit prendre un peu de mémoire je pense :). (je ne sais pas non plus si en recupérant un jpeg il génère l'octet alpha de transparence, ce qui ferait passer notre image de 5.5 Mo à près de 8Mo !)

Apparement ca viens de la derniere version de php (4.3.8) qui doit etre utiliser sur ton serveur, elle rend effective le paramètre memory_limitprésent dans le php.ini !

Les solutions ? ben je patauge un peu là ! Je dirais :
1 - Changer d'hébergeur pour un autre qui n'a pas fait la mise à jour, mais ca pourrait venir !
2 - Essayer de changer le paramètre memory_limit toi_meme avec ini_set si la fonction n'est pas désactivée ou en demandant à ton hébergeur
3 - utiliser des photos plus petite !

Tu pourras avoir qqs infos supplémentaires ici http://forums.ibf-french.com/index.php?showtopic=7729 nottement pour l'histoire de mémoire (si la fonction là aussi n'est pas désactiver :()
J'ai aussi retrouvé ce petit article sur la 4.3.8 http://www.nexen.net/interview/index.php?id=40

Répondre à CharlSka

J'ai trouvé des solutions ... enfin une réalisable de plusieurs manière, mais c'est pas effectif chez n'importe quel hébergeur ... moi j'ai eu de la chance :D !

En fait il y a moyen de modifier dynamiquement la variable memory_limit, voilà l'adresse où j'ai trouvé la solution (en anglais) http://www.ez.no/ez_publish/docume [...] php_memory

Pour ma part, la solution avec le .htaccess me semblait la moins chiante, et aussi la plus rapide à essayer :) !
Vous créer un fichier .htaccess (windows ne veux pas alors ajouter le point du début une fois le fichier sur le serveur, mais méfiez-vous selon le client ftp que vous utilisez, le fichier passera peut-etre en invisible :)) et vous mettez juste à l'interieur

Citation :

<FilesMatch "\.(php|html?)$">
php_value memory_limit 24M
</FilesMatch>

.
Ensuitevous placez le .htaccess dans le dossier contenant les script.php problematique et normalement (si l'hebergeur a pas bloquer le truc) CA MARCHE !

(Ca fait quand meme plaisir apres 3 jours de prise de tete :D)

Répondre à CharlSka
Tom's Guide > Forum > Programmation > Maîtrise de la taille mémoire engendrée par un Script PHP => Fatal error: Allowe
Aller à :

Il y a 2262 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre. Répondre Annuler
Liens