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
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.
Merci,
Mais comment je fais pour analyser mon script et trouver l'espace mémoire utilisé.
Comment réduire cet espace mémoire utilisé ?
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
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
!
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?)$">
|
.
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
)
Il y a 2262 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
