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

Langage PHP Discussion :

Erreur "Allowed memory size of x bytes exhausted"


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 193
    Points : 68
    Points
    68
    Par défaut Erreur "Allowed memory size of x bytes exhausted"
    En exécutant un script php l'erreur suivante apparait:

    Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 74 bytes) in /homez.25/ideesets/auxil/php_bdd.php on line 585

    et je ne comprend pas trop. Voici le code ou la ligne ou apparait l'erreur est soulignée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $field=explode("<0>",$field);
    
    while ($el=each($field)){
    ...
    }
    $field au départ est une très grosse chaine de caractère. Ensuite je l'explode et il devient un tableau avec de très nombreux éléments d'une centaine de caractères chacun. Ce qui m'étonne beaucoup est que php ai bien voulu assigner une variable si grosse que $field et me dise que la taille de mémoire est dépassée pour une toute petite assignation de 74 bytes dans la variable $el ! Car $el et réassignée à chaque tour de boucle, donc à chaque tour de boucle aucune mémoire supplémentaire ne devrait être nécessaire...?
    Comment résoudre ce problème?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    c'est peut-être "each" qui copie le tableau en entier
    essaye avec foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($field as $el) {
        // ...
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 193
    Points : 68
    Points
    68
    Par défaut
    j'ai essayé avec foreach et depuis il me trouve exactement la même erreur (avec 74 bytes) sur la ligne avec le explode. Je suis revenu à while et il continue à trouver l'erreur sur le explode...bizarre

  4. #4
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonsoir,

    As-tu essayé d'allouer d'avantage de mémoire ?
    dans le php.ini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ;;;;;;;;;;;;;;;;;;;
    ; Resource Limits ;
    ;;;;;;;;;;;;;;;;;;;
     
    memory_limit = 16M      ; Maximum amount of memory a script may consume (16MB)
    Gillou

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/12/2009, 14h14
  2. Réponses: 1
    Dernier message: 03/10/2009, 11h36
  3. [PEAR][Mail] Fatal Error : Allowed memory size of 8388608 bytes exhausted
    Par bigben89 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 20/10/2008, 18h01
  4. Réponses: 3
    Dernier message: 08/08/2007, 19h08
  5. [Librairies] zip.lib.php Fatal error: Allowed memory size of 8388608 bytes exhausted
    Par manaboko dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 22/05/2006, 10h42

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