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 :

Fatal error: Allowed memory size


Sujet :

Langage PHP

  1. #1
    Membre averti
    Avatar de crozet.magenta
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 208
    Points : 374
    Points
    374
    Par défaut Fatal error: Allowed memory size
    Bonjour, lorsque je lance mon script php, j'ai droit à cette erreur : Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes)

    voici le code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
    $fm = fopen("membres.txt" , "rb");
    $nbmembres = 1;
     
    while(!feof($fm)) {//récupérer les noms des membres et leur nombre ( variable $nommembre )
      $nommembre[$nbmembres] = fgets($fm);
      $nbmembres++;
    }
    fclose($fm);
    $nbmembres = $nbmembres - 1;
    $l=1;
    $m=1;
    for($id = 1 ; $id <= $nbmembres ; $id++ ){ //nettoyage de la variable $nommembre
    $nommembre[$id] = preg_replace('/\s/', '',$nommembre[$id]);
    }
    echo "<br />";
    for($id = 1 ; $id <= $nbmembres ; $id++ ) { //récupère les infos des membres ( variable $infos )
    	$nomfichiero=$nomfichier=$nommembre[$id];
    	$nomfichiero.="o.txt";
    	$nomfichier.=".txt";
     
    	$fm = fopen($nomfichier , "rb");
    	$fo = fopen($nomfichiero, "rb");
    	$d=$l;
    	$f=$l+2	;
    		for($l = $d ; $l <= $f ; $l++) { //on récupère les infos actuelles
    			$infos[$l] = fgets($fm);
    			}
    	$i=$m;
    	$e=$m+2	;
    		for($i = $m ; $i <= $e ; $m++) { //on récupère les anciennes infos
    			$infoso[$m] = fgets($fo);
    			}
    	fclose($fm);
    	fclose($fo);
    }
     
    for($id = 1 ; $id <= $f ; $id++ ){ //nettoyage de la variable $infos
    $infos[$id] = preg_replace('/\s/', '',$infos[$id]);
    }
    echo "<br />";
    for($ido = 1 ; $ido <= $e ; $ido++ ){ //nettoyage de la variable $infoso
    $infoso[$ido] = preg_replace('/\s/', '',$infoso[$ido]);
    }
    echo "<br />";
     
     
     
    foreach ($nommembre as $numLine => $text) {
      echo "Membre numéro " . $numLine . " : " . $text . "<br/>";
    }
    foreach ($infos as $numLine => $text) {
      echo "info numéro " . $numLine . " : " . $text . "<br/>";
    }
    ?>
    comment corriger ce problème ?

    note :
    Les fichiers que j'ouvre font tous moins de 1 Ko (le plus gros fait 16 octets)
    il y a en tout 5 fichiers pour un poids total de 73 octets
    le script fait 2565 octets
    n'oubliez pas de voter si le message vous a aidé


  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu dois être en boucle infinis (y'a beaucoup de blabla dans ton code)

    montre tes fichiers de base et ce que tu voudrais avoir au final

  3. #3
    Membre averti
    Avatar de crozet.magenta
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 208
    Points : 374
    Points
    374
    Par défaut
    fichiers de base ?
    c'est à dire ?

    Dans ce script, on ouvre un fichier avec une liste de membres. (un nom par ligne)
    on enregistre chaque nom dans une variable ($membres[×])
    sur le serveur, il y a deux fichiers par membre contenant chacun 3 lignes
    les fichiers ont pour nom : nomdumembre.txt et nomdumembre-o.txt
    je récupère les infos des fichiers et je les stocke dans deux variables ligne par ligne (infos[×] et infoso[×])

    j'affiche le tout

    l'erreur est apparue quand j'ai rajouté ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		for($i = $m ; $i <= $e ; $m++) { //on récupère les anciennes infos
    			$infoso[$m] = fgets($fo);
    			}
    n'oubliez pas de voter si le message vous a aidé


  4. #4
    Membre averti
    Avatar de crozet.magenta
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 208
    Points : 374
    Points
    374
    Par défaut
    c'est bon, j'ai trouvé, c'est effectivement une boucle infinie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		for($i = $m ; $i <= $e ; $m++) { //on récupère les anciennes infos
    			$infoso[$m] = fgets($fo);
    			}
    j'incrémente $m au lieu d'incrémenter $i

    désolé pour le dérangement ...
    n'oubliez pas de voter si le message vous a aidé


  5. #5
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Si je suis ta logique les deux boucles sont pas sur le même style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	$d=$l;
    	$f=$l+2	;
    		for($l = $d ; $l <= $f ; $l++) { //on récupère les infos actuelles
    			$infos[$l] = fgets($fm);
    			}
    	$i=$m;
    	$e=$m+2	;
    		for($i = $m ; $i <= $e ; $m++) { //on récupère les anciennes infos
    			$infoso[$m] = fgets($fo);
    			}
    En effet $i revient tjs à la même valeur ...

    d'ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	$d=$l;
    	$f=$l+2	;
    		for($l = $d ; $l <= $f ; $l++) { //on récupère les infos actuelles
    			$infos[$l] = fgets($fm);
    			}
    	$i=$m;
    	$e=$m+2	;
    		for($m = $i ; $m <= $e ; $m++) { //on récupère les anciennes infos
    			$infoso[$m] = fgets($fo);
    			}
    car sinon for($i = $m ; $i <= $e ; $m++) boucle infinie
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    En même temps
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

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

Discussions similaires

  1. [Images] Galerie photo (Fatal error: Allowed memory size)
    Par Dookie dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 25/05/2010, 13h13
  2. [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, 19h01
  3. Réponses: 3
    Dernier message: 08/08/2007, 20h08
  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
  5. Fatal error: Allowed memory size of...
    Par Webfab dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2005, 11h11

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