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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Allowed memory size of 134217728 exhausted impossible à outrepasser


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut Allowed memory size of 134217728 exhausted impossible à outrepasser
    Bonjour,

    J'obtiens lors de l'exécution d'un script assez lourd l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 83363841 bytes) in...
    Je précise que :
    - Dans le php.ini, la limite de mémoire est bien fixée à 512M (mon phpinfo() le confirme)
    - De toute manière, j'ai dans le même répertoire que le script un autre fichier php.ini contenant les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    max_execution_time = 0
    max_input_time = 600
    memory_limit = 512M
    Alors pourquoi cette limitation à 128M ? D'où peut-elle venir ? J'utilise Zend Server mais je ne pense pas qu'il puisse influer sur ça... Si ?


    Toute suggestion sera bienvenue !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je dirais que tu as une boucle infinie quelque part et donc que quelque soit la limite de mémoire que tu places, tu deborderas toujours : 128Mo pour un script c'est déjà énorme.

    Il est possible que l'indication d'erreur retranscrive mal les informations dans un cas comme ça, même si je n'ai pas trouvé confirmation de ça.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    Merci pour ta réponse. En l'occurence, mon code ne fait pas grand chose, même si la consommation de mémoire est grosse : j'ouvre un fichier (de 15Mo, d'où la mémoire) qui est un objet sérialisé, et ensuite je fais un print_r de l'objet désérialisé. C'est à l'endroit du print_r que l'erreur se produit.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Hello,

    Toute suggestion sera bienvenue
    Je pense qu'afficher ( print_r) d'un fichier de plus de 15Mo est une très mauvaise chose. Je ne pense pas que le navigateur le supporte d'ailleurs ou très mal. une page faisant en générale 50-100Ko


    Tu pourrai n'afficher qu'un partie de ce tableau, par exemple les 10 dernière rows.

    edit] Une dernière remarque : pour de tel volume de donnée, pourquoi ne pas utiliser une base de donnée ?

    Crdlt,

  5. #5
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    Bonne suggestion
    D'ailleurs, je crois que c'est encore pire que ce que tu dis : afficher un fichier de 15Mo c'est pas bien, mais en plus un objet désérialisé dont la sérialisation prend 15 Mo, c'est encore pire, mais j'aime bien faire souffrir mon ordi

    J'avoue que j'avais pas pensé à la BD, oui pourquoi pas... Je ne sais pas trop comment je pourrais organiser mes données mais bon...


    Cela dit, ça n'explique pas mon problème de départ, à savoir qu'il considère que la limite de mémoire est à 128M alors que je l'ai fixée à 512M partout.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    brunoperel,

    Dans le doute, combien de mémoire vive dispose tu sur ta machine( RAM) ?

    Pour ma part j'ai 512, mais sans mal je peu penser que tu a 1Go. Il faut penser que le système d'exploitation en utilise déjà une partie et que l'OS ne permettra pas a un processus ( Apache -> PHP) de prendre plus que disponible. Il y a bien le swap mais l'allocation qui coquille.

  7. #7
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    J'ai 4Go de RAM sur ma machine, dont 3 allouables. De plus, j'ai bien vérifié et il reste au moins 1Go de libre au moment où je lance mon script PHP.

    Merci quand même...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Yop,

    Si tu le veux bien, j'aimerai tester de mon coté aussi. Pourrais tu partager/mettre en ligne ton fichier de données et le script que tu utilise ? Je me permet de te le demander car j'ai crus comprendre que tu était encore en phase de test.

    J'ai regardé le bug tracker de PHP. Quelques bug on éte reporté mais souvent ils nous disent de chercher ailleurs...

    Quel version de PHP utilise tu dans le doute ?


    Je me rappel vaguement de mes expérience avec Windows MASM que les OS limitai les processus a un certain nombre d'espace RAM; peut être du a l'archi. J'ai un 64bit qui sert tourne avec pas bcp de ram, je ne gagne donc pas en perf, néanmoins je bénéficie toujours des Int sur 64bit( donc une porté d'espace mémoire plus grande) On ne sais jamais.

    Crdlt,

  9. #9
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    Pourquoi pas oui, essaie de tester.

    Tu crées simplement un source PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $inF = fopen('serialized.txt',"r"); 
    	$buffer='';
    	while (!feof($inF)) {
    	   $buffer.= fgets($inF, 4096);
    	}
    	$pere=unserialize($buffer);
    	print_r($pere);
    ?>
    Et le fichier serialized.php est situé à l'adresse suivante : http://nonoox.toile-libre.org/serialized.txt

    Bon courage !

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    que vaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump(ini_get('memory_limit'));

Discussions similaires

  1. Allowed memory size of 134217728 bytes exhausted
    Par kate59 dans le forum Langage
    Réponses: 4
    Dernier message: 16/01/2013, 15h48
  2. Réponses: 1
    Dernier message: 08/11/2010, 19h49
  3. Réponses: 3
    Dernier message: 08/12/2009, 15h14
  4. [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, 11h42

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