[php]Problème de RAM serv'
Résolu
Zep3k!GnO
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
J'ai un soucis avec un de smes scripts, mon hébergeur me dit que ce dernier occupe 27 % de la RAM dispo sur leur serv' , ce qui est énorme !
Il faut que je règle ce problème a tout prix sinon ils vont me kicker de leur serv' :(
Donc je voufdrai savoir comment faire pour diminuer la mémoire utilisée par mon script ,ce dernier étant tout bête , il y a dedans 2 à 3 "for " ,
1 a 2 "switch" et pas grand chose d'autre au niveau traitement...
Si quelqu'un peu me dire comment faire pour réduire l'occupation de la RAM sur le serv' ou m'aiguiller vers un site sur lequel je pourrai trouver de la doc ça serait CoOl !
Sinon si carrément c'est le père noël qui me réponds et qui veut jeter un coups d'oeil sur le script, bah je le mettrai en ligne ... Mais c'est pas tous les jours Noël :P
Merci :D
J'ai un soucis avec un de smes scripts, mon hébergeur me dit que ce dernier occupe 27 % de la RAM dispo sur leur serv' , ce qui est énorme !
Il faut que je règle ce problème a tout prix sinon ils vont me kicker de leur serv' :(
Donc je voufdrai savoir comment faire pour diminuer la mémoire utilisée par mon script ,ce dernier étant tout bête , il y a dedans 2 à 3 "for " ,
1 a 2 "switch" et pas grand chose d'autre au niveau traitement...
Si quelqu'un peu me dire comment faire pour réduire l'occupation de la RAM sur le serv' ou m'aiguiller vers un site sur lequel je pourrai trouver de la doc ça serait CoOl !
Sinon si carrément c'est le père noël qui me réponds et qui veut jeter un coups d'oeil sur le script, bah je le mettrai en ligne ... Mais c'est pas tous les jours Noël :P
Merci :D
A voir également:
- [php]Problème de RAM serv'
- Mon pc ram - Guide
- Memoire ram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Comment savoir combien de ram a mon pc - Guide
- Telecharger de la ram ✓ - Forum Téléchargement
4 réponses
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
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>";
?>
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
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?
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