Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 11h12   #1
Invité régulier
 
Inscription : avril 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 18
Points : 7
Points : 7
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 :
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 :
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
ticad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 13h25   #2
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mai 2004
Messages : 84
Points : 36
Points : 36
A l'affichage, ça se traduit comment ? Une page blanche ? Une erreur ?
lionheart33806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 14h20   #3
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

as tu activé l'affichage des erreurs ?

Code :
1
2
ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', 1);
Éventuellement sortir le html du php :

Code :
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 :
<input type="checkbox" name="valide[]" value="<?php echo $reference_article; ?>" size="3" maxlenght="5">
Ensuite tu boucles dessus :

Code :
1
2
3
foreach ( $_POST['valide'] as $val ) {
... traitement
}
Il vient d'où ton $count de la page2.php ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 14h24   #4
Membre confirmé
 
Avatar de Jcpan
 
Inscription : août 2008
Messages : 481
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 481
Points : 248
Points : 248
http://php.net/manual/fr/function.set-time-limit.php

Citation:
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.
Jcpan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h31.


 
 
 
 
Partenaires

Hébergement Web