[php]Problème de RAM serv'
Résolu/Fermé
Zep3k!GnO
-
22 sept. 2005 à 11:54
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 22 sept. 2005 à 16:44
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 22 sept. 2005 à 16:44
A voir également:
- [php]Problème de RAM serv'
- Test ram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Cas ram - Guide
- 2 paires de ram différentes - Forum Carte-mère/mémoire
- 24go de ram ✓ - Forum Matériel & Système
4 réponses
dedale82
Messages postés
403
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
28 octobre 2008
282
22 sept. 2005 à 12:14
22 sept. 2005 à 12:14
Salut,
sans le script on ne peut pas faire grand chose, mais si tu as deux ou trois for imbriqués, ca peut expliquer l'occupation de la ram.
le meilleur site de doc c'est encore http://www.php.net
A plus
sans le script on ne peut pas faire grand chose, mais si tu as deux ou trois for imbriqués, ca peut expliquer l'occupation de la ram.
le meilleur site de doc c'est encore http://www.php.net
A plus
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
22 sept. 2005 à 12:51
22 sept. 2005 à 12:51
Oui tu pourrais nous montrer ton script?
Voilà donc l'intégralité de ce m3ch4nt script !!!!!!
<?php
require"MysqlClass.php5";
require"configmarques.php5";
$db=new mysql();
try
{
$db->connection($ADBD,$LOG,$PASS);
}
catch(DBException $e)
{
echo"PROBLEME :: ".$e->getMessage();
exit();
}
catch(Exception $e)
{
echo"Erreur non connue :: ".$e->getMessage();
exit();
}
//-----------------------------------------------------------------------------------------------------
$request="SELECT shoes,pants,sweats,tishs,jackets,caps,accessoires,chemises FROM $NOMTABLE WHERE marque='$marque'";
$db->requete($request,$NOMBASE);
//Recuperations des valeurs
$count=0; //initialisation d'une variable qui sert de compteur
/*Variable a mettre a jour selon le nombre de valeurs que l'on désire lire*/
$nbVal=8;
/*fin de mise a jourt de variable*/
//recupération des valeurs dans un tableau ---------------------------------------------------------
while($Valeur=$db->recupValeur())
{
for($i=0;$i<$nbVal;$i++) //selon le nombre d'information demandées en requête .
{
$recup[$count]=$Valeur[$i];
$count++;
}
}
//--------------fin recup !
//recherche de la page a afficher par défaut...
$cpt=0;
for($L=0;$L<8;$L++)
{
if($recup[$L]==1) //si on a une catégorie a aficher
{
$cpt++;
if($cpt==1) //et que c'est la première ..
{
switch($L)
{
case 0: $type="shoes";
break;
case 1: $type="pants";
break;
case 2: $type="sweats";
break;
case 3: $type="tishs";
break;
case 4: $type="jackets";
break;
case 5: $type="caps";
break;
case 6: $type="accessoires";
break;
case 7: $type="chemises";
break;
}
$url="cata.php5?marque=$marque&type=$type&pallier=0&sort=0";
}
}
}
if(!isset($url)) //si la variable n'existe pas.
{
$url="rien.htm";
}
if(isset($typeVOULU)) // si on veut afficher un type en particulier
{
$url="cata.php5?marque=$marque&type=$typeVOULU&pallier=0&sort=0";
}
//--FIN de la recherche
echo"<html><head>
<script language=\"javascript\">
function link(url)
{
parent.catalogue.location.href=url;
}
</script>
<link href=\"tableau.css\" rel=\"stylesheet\" type=\"text/css\">
</head>
<body onLoad=\"javascript:link('$url')\"><table width=\"80\" >";
if($marque=="plus")
{
$markA="Toutes les marques";
}
else
{
$markA=$marque;
}
echo"
<tr><td height=\"26\" align=\"center\" bgcolor=\"#D40A0A\"><font color=\"white\"><b>$markA</b></font></td></tr> ";
for($i=0;$i<8;$i++)
{
switch($i)
{
case 0: $aff="shoes";
break;
case 1: $aff="pants";
break;
case 2: $aff="sweats";
break;
case 3: $aff="tishs";
break;
case 4: $aff="jackets";
break;
case 5: $aff="caps bonnets";
break;
case 6: $aff="accessoires";
break;
case 7: $aff="chemises";
break;
}
if($recup[$i]!=0) //si le champ existe
{
echo"<tr><td height=\"35\" class=\"fin_noir\" align=\"center\" bgcolor=\"#CDC8C8\"><a class=\"sten\" href=\"cata.php5?marque=$marque&type=$aff&pallier=0&sort=0\" target=\"catalogue\">$aff</a></td></tr>";
}
else
{
//echo"<tr><td height=\"40\" align=\"center\"><font color=\"#CCCCCC\">$aff</font></td></tr>";
}
}
echo"</body></html></table>";
?>
<?php
require"MysqlClass.php5";
require"configmarques.php5";
$db=new mysql();
try
{
$db->connection($ADBD,$LOG,$PASS);
}
catch(DBException $e)
{
echo"PROBLEME :: ".$e->getMessage();
exit();
}
catch(Exception $e)
{
echo"Erreur non connue :: ".$e->getMessage();
exit();
}
//-----------------------------------------------------------------------------------------------------
$request="SELECT shoes,pants,sweats,tishs,jackets,caps,accessoires,chemises FROM $NOMTABLE WHERE marque='$marque'";
$db->requete($request,$NOMBASE);
//Recuperations des valeurs
$count=0; //initialisation d'une variable qui sert de compteur
/*Variable a mettre a jour selon le nombre de valeurs que l'on désire lire*/
$nbVal=8;
/*fin de mise a jourt de variable*/
//recupération des valeurs dans un tableau ---------------------------------------------------------
while($Valeur=$db->recupValeur())
{
for($i=0;$i<$nbVal;$i++) //selon le nombre d'information demandées en requête .
{
$recup[$count]=$Valeur[$i];
$count++;
}
}
//--------------fin recup !
//recherche de la page a afficher par défaut...
$cpt=0;
for($L=0;$L<8;$L++)
{
if($recup[$L]==1) //si on a une catégorie a aficher
{
$cpt++;
if($cpt==1) //et que c'est la première ..
{
switch($L)
{
case 0: $type="shoes";
break;
case 1: $type="pants";
break;
case 2: $type="sweats";
break;
case 3: $type="tishs";
break;
case 4: $type="jackets";
break;
case 5: $type="caps";
break;
case 6: $type="accessoires";
break;
case 7: $type="chemises";
break;
}
$url="cata.php5?marque=$marque&type=$type&pallier=0&sort=0";
}
}
}
if(!isset($url)) //si la variable n'existe pas.
{
$url="rien.htm";
}
if(isset($typeVOULU)) // si on veut afficher un type en particulier
{
$url="cata.php5?marque=$marque&type=$typeVOULU&pallier=0&sort=0";
}
//--FIN de la recherche
echo"<html><head>
<script language=\"javascript\">
function link(url)
{
parent.catalogue.location.href=url;
}
</script>
<link href=\"tableau.css\" rel=\"stylesheet\" type=\"text/css\">
</head>
<body onLoad=\"javascript:link('$url')\"><table width=\"80\" >";
if($marque=="plus")
{
$markA="Toutes les marques";
}
else
{
$markA=$marque;
}
echo"
<tr><td height=\"26\" align=\"center\" bgcolor=\"#D40A0A\"><font color=\"white\"><b>$markA</b></font></td></tr> ";
for($i=0;$i<8;$i++)
{
switch($i)
{
case 0: $aff="shoes";
break;
case 1: $aff="pants";
break;
case 2: $aff="sweats";
break;
case 3: $aff="tishs";
break;
case 4: $aff="jackets";
break;
case 5: $aff="caps bonnets";
break;
case 6: $aff="accessoires";
break;
case 7: $aff="chemises";
break;
}
if($recup[$i]!=0) //si le champ existe
{
echo"<tr><td height=\"35\" class=\"fin_noir\" align=\"center\" bgcolor=\"#CDC8C8\"><a class=\"sten\" href=\"cata.php5?marque=$marque&type=$aff&pallier=0&sort=0\" target=\"catalogue\">$aff</a></td></tr>";
}
else
{
//echo"<tr><td height=\"40\" align=\"center\"><font color=\"#CCCCCC\">$aff</font></td></tr>";
}
}
echo"</body></html></table>";
?>
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
22 sept. 2005 à 14:45
22 sept. 2005 à 14:45
Bon, tu peux essayer deux trois trucs pour alléger ton script.
D'abord, ton script récupère les champs mysql avec des index numeriques, si tu utilisais mysql_fetch_assoc, tu pourrais te passer de l'utilisation du switch.
Ensuite tu as déjà une boucle for($i=0;$i<$nbVal;$i++) et tu relances à peu près la même (une boucle pour la récupération, et une autre pour le traitement et l'affichage, sans compter que tu relances le même switch plus tard).
Tu pourrais combiner les trois boucles en une.
D'ailleurs avec ça tu pourras te permettre de n'utiliser que $Valeur[$i] et te passer de $recup[$count].
Je me demande un truc, est ce que pour ta requête tu n'obtiens toujours qu'une seule ligne de résultat ou est ce que tu en as plusieurs?
D'abord, ton script récupère les champs mysql avec des index numeriques, si tu utilisais mysql_fetch_assoc, tu pourrais te passer de l'utilisation du switch.
Ensuite tu as déjà une boucle for($i=0;$i<$nbVal;$i++) et tu relances à peu près la même (une boucle pour la récupération, et une autre pour le traitement et l'affichage, sans compter que tu relances le même switch plus tard).
Tu pourrais combiner les trois boucles en une.
D'ailleurs avec ça tu pourras te permettre de n'utiliser que $Valeur[$i] et te passer de $recup[$count].
Je me demande un truc, est ce que pour ta requête tu n'obtiens toujours qu'une seule ligne de résultat ou est ce que tu en as plusieurs?
"Je me demande un truc, est ce que pour ta requête tu n'obtiens toujours qu'une seule ligne de résultat ou est ce que tu en as plusieurs?"
-->Ce que j'ai en retour c'est une seule' ligne' car chaque marque est unique et a ses attributs comme shoes,sweats ...
xD Merci je vais tester ça...
Mais par hasard t'aurais pas une méthode pour tester la RAM utilisé par un script afin que je sache avant de remettre en ligne si j'ai oui ou non réussi a réduire l'utilisation de la RAM...
Merki
-->Ce que j'ai en retour c'est une seule' ligne' car chaque marque est unique et a ses attributs comme shoes,sweats ...
xD Merci je vais tester ça...
Mais par hasard t'aurais pas une méthode pour tester la RAM utilisé par un script afin que je sache avant de remettre en ligne si j'ai oui ou non réussi a réduire l'utilisation de la RAM...
Merki
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
22 sept. 2005 à 15:05
22 sept. 2005 à 15:05
Non, je crois qu'il y a une fonction pour contrôler le temps d'execution du script par contre, mais je ne retrouve plus son nom.
Je suppose que le mieux c'est de ne pas faire de boucles inutiles, de minimiser le nombre de variables (s'il y a des variables qui contiennent la même chose et d'autant plus si ce sont des grosses valeurs, dans ton cas autant s'arranger pour s'en passer).
En bref: optimiser ton algorithme le plus possible, avoir un temps d'execution moins long si possible etc....
-->Ce que j'ai en retour c'est une seule' ligne' car chaque marque est unique et a ses attributs comme shoes,sweats ...
Donc pour une marque donnée, tu n'as que un pantalon, un short, une chemise etc...? C'est bien ça?
Je suppose que le mieux c'est de ne pas faire de boucles inutiles, de minimiser le nombre de variables (s'il y a des variables qui contiennent la même chose et d'autant plus si ce sont des grosses valeurs, dans ton cas autant s'arranger pour s'en passer).
En bref: optimiser ton algorithme le plus possible, avoir un temps d'execution moins long si possible etc....
-->Ce que j'ai en retour c'est une seule' ligne' car chaque marque est unique et a ses attributs comme shoes,sweats ...
Donc pour une marque donnée, tu n'as que un pantalon, un short, une chemise etc...? C'est bien ça?
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
22 sept. 2005 à 15:10
22 sept. 2005 à 15:10
Une astuce pour contrôler le temps d'execution:
http://www.phpcs.com/code.aspx?ID=32471
http://www.phpcs.com/code.aspx?ID=32471
Zep3k!GnO
>
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
22 sept. 2005 à 15:31
22 sept. 2005 à 15:31
En fait ce script sert a l'affichage d'un menu dans lequel seront présentes seules les rubriques que la marque contient.
Exemple j'ai une marque 'EMERICA' , on a des shorts, des sweats des shoes et des tishs de cette marque dans le shop.
alors dans une table nommée marque j'y insert la nouvelle marque 'EMERICA' et je mets des 0 ou ds 1 dans les différents champs :
1 pour shoes,1 pour sweats (1 qd c'est présent,sinon 0), 0 pour chemise,0 pour accessoires..etc
A l'appel de mon script,je ragarde ce que la marque contient comme rubrique , la ou il y a des 1 , j'affiche l'intitulé de la rubrique dans le menu .
J'espère que je suis clair car c'est pô facile a Xpliquer comme ça dans le flow alors que c'est assez Zarb ;P .
En tout cas , MERCI de ton aide c'est CoOl d'avoir du soutient car je lutte depuis pas mal de temps sur ce BaZzzZArd !!!!
:D
Exemple j'ai une marque 'EMERICA' , on a des shorts, des sweats des shoes et des tishs de cette marque dans le shop.
alors dans une table nommée marque j'y insert la nouvelle marque 'EMERICA' et je mets des 0 ou ds 1 dans les différents champs :
1 pour shoes,1 pour sweats (1 qd c'est présent,sinon 0), 0 pour chemise,0 pour accessoires..etc
A l'appel de mon script,je ragarde ce que la marque contient comme rubrique , la ou il y a des 1 , j'affiche l'intitulé de la rubrique dans le menu .
J'espère que je suis clair car c'est pô facile a Xpliquer comme ça dans le flow alors que c'est assez Zarb ;P .
En tout cas , MERCI de ton aide c'est CoOl d'avoir du soutient car je lutte depuis pas mal de temps sur ce BaZzzZArd !!!!
:D
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
>
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
22 sept. 2005 à 15:59
22 sept. 2005 à 15:59
En ce cas, tu n'as donc qu'une ligne de résultat (un seul tuple).
Donc a priori, pas besoin de
Tu peux le transfomer en
Ca fait un bloc d'indentation en moins, que du bonus :-)
Donc a priori, pas besoin de
while($Valeur=$db->recupValeur())
Tu peux le transfomer en
$Valeur=$db->recupValeur()
Ca fait un bloc d'indentation en moins, que du bonus :-)