Optimisation du code php

Fermé
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 - 26 août 2009 à 10:11
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 - 26 août 2009 à 15:26
Bonjour,
lorsque je lance ma page sa marche très bien sauf que sa prend énormément de temps et je pense qu'il y a un problème d'optimisation dans cette parti du code
mon problème est que quand je lance la page sa m'affiche le champ numéro trois mais sa prend au moin 30 seconde
il y a une liste déroulante et quand je clique sur une campagne sa me lance le point 2 et si je veu voir toute les campagnes je met le point 3
mais sa prend trop de temps je sais pas si il y a moyen d'optimisé sa et si oui comment merci de votre aide
<?php
if (isset($_POST['Envoyer']))
{
$campaign_name = $_POST["cc"];
//1) voire les campagnes qui ont été selectionnée par "toute"
if ($campaign_name == 'tous' )
{
$tous = "SELECT cc_campaign FROM `cc` WHERE cc_campaign not like '%test%' and cc_campaign not like '%sofinco%' group by cc_campaign ORDER BY cc_date DESC";
$tous_cc = mysql_query($tous);

echo 'toutes les stats :';
while ($resultat_cc = mysql_fetch_row($tous_cc)) {

$campaign_name = $resultat_cc[0];
stats_cc($campaign_name);
}
//2)voir les campagnes qui ont été selectionné par nom de campagne
}else {

stats_cc($campaign_name);

}
//3)campagne affiché lorsqu'on lance la page
}else{
$rq = "SELECT cc_campaign FROM `cc` WHERE cc_campaign not like '%test%' and cc_campaign not like '%sofinco%' group by cc_campaign ORDER BY cc_date DESC limit 1";
$row1 = mysql_query($rq);
$result_row = mysql_fetch_assoc($row1);
$campaign_name = $result_row["cc_campaign"];

stats_cc($campaign_name);
}
?>


si jamais ci dessous le code de ma liste déroulante

<form method="POST" action="cc_stats.php" name="stats">
<select size=1 name="cc" >
<option value="0">Choix De La Campagne</option>
<?php
$sql = "SELECT cc_campaign, cc_date FROM `cc` WHERE cc_campaign not like '%test%' and cc_campaign not like '%sofinco%' group by cc_campaign ORDER BY cc_date DESC";
$ReqLog = mysql_query($sql);

while ($resultat = mysql_fetch_row($ReqLog)) {
$campaign_name = $resultat[0];
$value =remplaceNom($campaign_name);

echo '<option value="'.$resultat[0].'">'.$value."_".$resultat[1];
echo '</option>'."\n";
}
echo '<option value="tous">Toutes Les Campagnes<option>';
?>
</select>
<input name="Envoyer" type="submit" value="Envoyer" />
</form>

Merci de votre aide
A voir également:

7 réponses

pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
26 août 2009 à 10:17
Hello !

Bon, je n'ai pas tout lu, mais je peux déjà dire que les
SELECT [...] WHERE truc NOT LIKE '%machin%'
sont très coûteux et à éviter au maximum. En effet, aucun index ne pourra être utilisé dans ce cas, et le SGBD devra rechercher la chaîne "machin" dans chacun des champs. Il faudrait revoir la conception de ta base en ce qui concerne le contenu de ce champ afin de pouvoir effectuer des recherches du type
SELECT [...] WHERE truc NOT LIKE 'machin%'
avec un index sur la colonne truc.
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
26 août 2009 à 10:23
ok mais sinon le code que j'ai mis tien la route??
vis a vis du point 1, 2 et 3 ??
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
26 août 2009 à 10:27
Pas envie d'essayer de comprendre un code non indenté, trop désagréable à lire, désolé... Mais a priori c'est correct.
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
26 août 2009 à 10:29
ok
l'indentation a sauté
merci quand même bonne journée
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
26 août 2009 à 10:30
Pour garder l'indentiation, il faut encadrer ton code avec les balises < code> et < /code>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
26 août 2009 à 10:45
ok merci je fais les modiff et je te tien au courant
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
26 août 2009 à 10:57
voilà j'ai effectué les modiff comme tu m'a dis mais c'est toujours aussi lent donc peut-être que tu verra mieu mon erreur avec l'indentation

Merci

    <form method="POST" action="cc_stats.php" name="stats"> 
    <select size=1 name="cc" > 
    <option value="0">Choix De La Campagne</option> 
		<?php
			$sql = "SELECT cc_campaign, cc_date FROM `cc` WHERE cc_campaign != 'test' and cc_campaign !='mental_power_cc-test' and cc_campaign !='sondage_sofinco' group by cc_campaign  ORDER BY cc_date DESC"; 
			$ReqLog = mysql_query($sql); 
			while ($resultat = mysql_fetch_row($ReqLog)) { 
				$campaign_name = $resultat[0];
				$value =remplaceNom($campaign_name);
				echo '<option value="'.$resultat[0].'">'.$value."_".$resultat[1]; 
				echo '</option>'."\n"; 
			}
			echo '<option value="tous">Toutes Les Campagnes<option>'; 
        ?>
    </select>
    <input name="Envoyer" type="submit" value="Envoyer" /> 
    </form>


<?php
	if (isset($_POST['Envoyer']))
	{
		$campaign_name = $_POST["cc"];
		//1) voire les campagnes qui ont été selectionnée par "toute" 
		if ($campaign_name == 'tous' )
		{
			$tous = "SELECT cc_campaign FROM `cc` WHERE cc_campaign != 'test' and cc_campaign !='mental_power_cc-test' and cc_campaign !='sondage_sofinco' group by cc_campaign  ORDER BY cc_date DESC"; 
			$tous_cc = mysql_query($tous); 
						
			echo 'toutes les stats :';
			while ($resultat_cc = mysql_fetch_row($tous_cc)) { 
				$campaign_name = $resultat_cc[0];
				stats_cc($campaign_name);
			}
		}else {
			//2)voir les campagnes qui ont été selectionné par nom de campagne 
			stats_cc($campaign_name);
		}
		}else{
			//3)campagne affiché lorsqu'on lance la page 
			$rq = "SELECT cc_campaign FROM `cc` WHERE  customers_id >= '1' group by cc_campaign  ORDER BY cc_date DESC limit 1"; 
			$row1 = mysql_query($rq); 
			$result_row = mysql_fetch_assoc($row1);
			$campaign_name = $result_row["cc_campaign"];  	
			stats_cc($campaign_name);
	}
?>
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
26 août 2009 à 15:08
Est-ce que tu as un index sur ta colonne cc_campaign ? Si non, crées-en un, tu devrais sentir la différence.
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
26 août 2009 à 15:26
ok merci je vais lire la doc pour les index

Bonne journée
0