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 :

Linux, boucle for qui s'arrête : limite mémoire ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Linux, boucle for qui s'arrête : limite mémoire ?
    Bonjour à tous,

    Voilà j'ai migré une application php / mysql qui tournait sur Windows vers un Linux Mandriva 2010.
    Mon application marchait parfaitement sous Windows.

    Seulement sous Linux, je suis confronté à un problème que je ne sais résoudre.
    J'ai une boucle "for" qui s'arrête à 250 et qui devrait aller à 2600. On dirait un problème de memoire allouée.
    Y a t-il quelque chose à modifier dans le httpd.conf, ou le php.ini du Linux?

    J'ai mis : Memory_Limit : -1 mais rien n'y fait.

    Voici mon code Page1 qui envoi les post vers page2
    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
     
    echo '<form action ="page2.php" method="post">';
     
    			   	//=====================================================================================
    				// requête SQL qui ne prend que le nombre  d'enregistrement necessaire à l'affichage.
    				//=====================================================================================
    		$id=0;
    		$reponse2 = mysql_query("SELECT reference_article,designation,designation2,designation3,emplacement,famille,nom_famille FROM article,famille WHERE article.famille=famille.code_famille"); // Requête SQL
    		while ($donnees2 = mysql_fetch_array($reponse2) )
    		{
    			$reference_article=$donnees2['reference_article'];
    			$designation=stripslashes($donnees2['designation']);
    			$designation2=stripslashes($donnees2['designation2']);
    			$designation3=stripslashes($donnees2['designation3']);
    			$emplacement=stripslashes($donnees2['emplacement']);
    			$nom_famille=stripslashes($donnees2['nom_famille']);
    			echo '<tr><td height="20" width="100">'. $reference_article . '</td>
    			<td height="20" width="150">'. $designation . '<br>'.$designation2.'<br>'.$designation3.'</td>
    			<td height="20" width="50" align="center">'.$nom_famille.'</td>';
    			echo '<td height="20" width="50" align="center">';
     
    			echo '<input type="hidden" name="refarticle'.$id.'" value="'.$reference_article.'">';
    			echo '<input type="hidden" name="designation'.$id.'" value="'.$designation.'">';
    			echo '<input type="hidden" name="emplacement'.$id.'" value="'.$emplacement.'">';
     
    			echo '<input type="hidden" name="code_fournisseur" value="'.$code_fournisseur.'">';
    			echo '<input type="checkbox" name="valide'.$id.'" size="3" maxlenght="5"></td></tr>';
    			$id++;
    		}
    Page2.php

    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
     
    //Je récupère les données cochées. 
     
    $x=0;	
     
    for ($x;$x<$count;$x++)
    {		
    	//echo $x.'<br>';
    		$articlevalide[$x]=$_POST['valide'.$x];
    		$reference_article[$x] = $_POST['refarticle'.$x];
    		$designation[$x] = $_POST['designation'.$x];
     
    		if ($articlevalide[$x]=='on')
    		{ // insertion base }
    }
    Je ne sais pas si je suis claire dans mes explications mais merci d'avoir pris le temps de me lire

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    A l'affichage, ça se traduit comment ? Une page blanche ? Une erreur ?

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    as tu activé l'affichage des erreurs ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ini_set('error_reporting', E_ALL | E_STRICT);
    ini_set('display_errors', 1);
    Éventuellement sortir le html du php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $nom_famille=stripslashes($donnees2['nom_famille']); ?>
    <tr><td height="20" width="100"><?php echo $reference_article; ?></td>
    ...
    Ensuite, tu devrais mettre des tableaux dans tes input name :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="valide[]" value="<?php echo $reference_article; ?>" size="3" maxlenght="5">
    Ensuite tu boucles dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ( $_POST['valide'] as $val ) {
    ... traitement
    }
    Il vient d'où ton $count de la page2.php ?

  4. #4
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    http://php.net/manual/fr/function.set-time-limit.php

    Description

    void set_time_limit ( int $seconds )
    Fixe le délai d'expiration d'un script, en secondes. Si cette limite est atteinte, le script s'interrompt, et renvoie une erreur fatale. La valeur par défaut est 30 secondes ou, si c'est le cas, la valeur de la directive max_execution_time définie dans le php.ini.

    Lorsqu'elle est appelée, set_time_limit() remet le compteur à zéro. En d'autres termes, si la limite par défaut est à 30 secondes, et qu'après 25 secondes d'exécution du script l'appel set_time_limit(20) est fait, alors le script tournera pendant un total de 45 secondes avant de finir.

Discussions similaires

  1. Boucle for qui ne boucle pas !
    Par polothentik dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 18/04/2008, 10h50
  2. Boucle FOR qui arrete le script
    Par yves_fuji dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 16/04/2008, 14h06
  3. Boucle for qui fait un tour en trop
    Par Iloon dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/03/2008, 11h15
  4. Boucle for qui se bloque
    Par Flophx dans le forum C
    Réponses: 67
    Dernier message: 25/03/2007, 14h14
  5. boucle for qui ne marche pas
    Par Invité dans le forum Langage
    Réponses: 16
    Dernier message: 12/06/2006, 10h59

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