IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[GD] Erreur mémoire lors génération de vignettes


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Par défaut [GD] Erreur mémoire lors génération de vignettes
    Bonjour à tous,

    je suis en train d'essayer d'améliorer mon script de création de vignettes, surtout pour que cela fonctionne avec des images assez grandes.

    Visiblement le problème venait de l'allocation mémoire, généralement limitée à 8M sur le serveur. Grâce à une astuce trouvée sur le net, j'ai augmenté cette valeur dans un htaccess.

    Lors je génère les vignettes sur plusieurs petites images à la volée, pas de problème.

    Lors j'essaie avec des images plus importantes (genre 2560 x 1920), j'ai le message suivant

    Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 10240 bytes) in xxxxx
    ce que je ne comprend pas dans ce message c'est qu'il essaie de me dire que je peux pas allouer 10kb dans ma mémoire portée à 24Mb.

    Si mes calculs sont bons, j'ai besoin d'environ 12Mb pour cette image. Comme j'en ai plusieurs à redimensionner dans le même script, je m'étais dis qu'il suffirait de rajouter un imagedestroy et un unset à la fin des instructions de ma boucle pour "libérer de la mémoire". Est-ce une bonne idée ?

    La ligne incriminée par l'erreur ci-dessus est la ligne où j'ai mon 'ImageCreateFromJpeg'.

    Je vous remercie par avance si vous avez des pistes.

    PHP 4.4.1
    GD 2.0.28

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Salut,

    ce que je ne comprend pas dans ce message c'est qu'il essaie de me dire que je peux pas allouer 10kb dans ma mémoire portée à 24Mb.
    En fait il veut dire qu'il a dépasser les 24MB autorisés en essayant d'allouer un bloc de 10KB. Il n'alloue probablement pas toute la mémoire d'un coup, et si tu as déjà 23,999MB d'alloués, l'allocation d'un bloc de 10KB échouera, d'où ton message d'erreur.

    Comme j'en ai plusieurs à redimensionner dans le même script, je m'étais dis qu'il suffirait de rajouter un imagedestroy et un unset à la fin des instructions de ma boucle pour "libérer de la mémoire". Est-ce une bonne idée ?
    Libérer la mémoire avec imagedestroy et unset est évident une bonne idée
    Pour débugger, tu peux essayer aussi de voir l'utilisation memoire de ton script avec get_memory_usage().
    D'autre part je ne suis pas très sur de ton calcul. D'après les commentaires sur php.net à propos de imagecreatefromjpeg, la mémoire nécessaire serait environ :
    mémoire = (x* y * bits/8 * channels + 65536) * 1.65)
    soit pour une image 2560 x 1920 x 24bits pas loin de 24MB.
    Tu peux éventuellement essayer d'augmenter encore un peu la limite de mémoire et voir ce que ça donne

  3. #3
    Membre actif
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Par défaut
    Il y a des fois on cherche les trucs compliqués

    J'ai suivi ton conseil le plus simple en modifiant ma limite pour la porter à 50M. Et là ça marche.

    Donc je me suis fait avoir par mon calcul au départ.

    Merci pour ton aide.

    Bon me reste plus qu'à dire à mon bourrin de client de réduire légèrement ces images issus de son apn

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/03/2012, 00h45
  2. Erreur mémoire lors de l'impression
    Par prudho dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/01/2010, 17h01
  3. Réponses: 3
    Dernier message: 02/03/2008, 01h05
  4. [Upload] Erreur de mémoire lors d'un upload
    Par alpking dans le forum Langage
    Réponses: 3
    Dernier message: 10/11/2006, 10h35
  5. [ImageMagick] Erreur liée à la mémoire lors de la création
    Par ehmppowa dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 07/03/2006, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo