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 :

calcul du temps d'exécution


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 909
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 909
    Points : 420
    Points
    420
    Par défaut calcul du temps d'exécution
    Bonjour,

    j'ai le code suivant qui prend un certain temps :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    $sqla = sprintf("SELECT A.id_adh, A.id_vil, A.date_ins, B.id_vil, B.id_pay, B.ville_fr, C.id_pay, C.id_con, C.pays_".$lang.", D.cont_".$lang."
    	FROM BDD_adherent A
    	INNER JOIN BDD_ville B ON A.id_vil = B.id_vil
    	INNER JOIN BDD_pays C ON B.id_pay = C.id_pay 
    	INNER JOIN BDD_continent D ON D.id_con = C.id_con
    	WHERE A.valide ='2' AND (A.date_ins BETWEEN '2013-07-01' AND '2013-07-31') ORDER BY A.id_adh ASC");
     
    	$reqa = mysql_query($sqla) OR die('Erreur SQL !<br>'.$sqla.'<br>'.mysql_error());
     
    	IF ($reqa) {
    	$indic = 0;
    	while($dataa = mysql_fetch_assoc($reqa)){
    	$indic++;
    	IF($indic%2 == 1){$couleur = true;}else{$couleur = false;}
    	$id_adh = $dataa['id_adh'];
     
    	// requête pour déterminer les photos
     
    	$sqlc = sprintf("SELECT A.id_adh, B.id_adh, B.id_log, C.id_log, C.up_nom 
    			FROM BDD_adherent A
    			INNER JOIN BDD_logement B ON A.id_adh = B.id_adh
    			INNER JOIN BDD_photo C ON B.id_log = C.id_log
    			WHERE A.id_adh=%s", quote_smart($id_adh));
    			$reqc = mysql_query($sqlc) OR die('Erreur SQL : <br />'.$sqlc);
    			$nbr_photo = mysql_num_rows($reqc);
     
    			// requête pour déterminer la localité de l'adhérent et le nombre de couchage
    			$sqlb = sprintf("select X.id_adh, X.id_vil, X.ad_cp, A.id_vil, A.id_pay, A.ville_fr, B.id_pay, B.id_con, B.pays_".$lang.", C.id_con, C.cont_".$lang.", E.id_adh, E.pers
    			FROM BDD_adherent X
    			INNER JOIN BDD_ville A ON X.id_vil = A.id_vil
    			INNER JOIN BDD_pays B ON A.id_pay = B.id_pay
    			INNER JOIN BDD_continent C ON B.id_con = C.id_con
    			INNER JOIN BDD_logement E ON X.id_adh = E.id_adh
    			WHERE X.id_adh=%s", quote_smart($id_adh));
    			$reqb = mysql_query($sqlb) or die('Erreur SQL !<br>'.$sqlb.'<br>'.mysql_error());
    			$datab = mysql_fetch_assoc($reqb);
    			$ville_adh = $datab['ville_fr'];
    			$pays_adh = $datab['pays_'.$lang.''];
    			$continent_adh = $datab['cont_'.$lang.''];
    			$pers_adh = $datab['pers'];
    			$ad_cp = $datab['ad_cp'];
     
        if($couleur){
    	$envoi_mail->Body.='<div style="padding: 10px; background-color: rgb(184, 217, 232);">';}
    	else{
    	$envoi_mail->Body.='<div style="padding: 10px;">';}
     
        $envoi_mail->Body.='<TABLE width="530" cellspacing="0" cellpadding="0" border="0" style="font: 14px Arial,Verdana,Lucida Grande,Tahoma,Helvetica,Sans-Serif;">
          <tbody><tr>';
     
     
     
    	$sqlc = sprintf("SELECT A.id_adh, B.id_adh, B.id_log, C.id_log, C.up_nom 
    			FROM BDD_adherent A
    			INNER JOIN BDD_logement B ON A.id_adh = B.id_adh
    			INNER JOIN BDD_photo C ON B.id_log = C.id_log
    			WHERE A.id_adh=%s", quote_smart($id_adh));
    			$reqc = mysql_query($sqlc) or die('Erreur SQL : <br />'.$sqlc);
    			$nbr_photo = mysql_num_rows($reqc);
     
     
     
    	$sqld = sprintf("SELECT A.id_adh, B.id_log, B.id_adh, B.description, B.type, B.pers
    	FROM BDD_adherent A
    	INNER JOIN BDD_logement B ON A.id_adh = B.id_adh
    	WHERE A.id_adh=".$id_adh);
    	$reqd = mysql_query($sqld) or die('Erreur SQL : <br />'.$sqld);
    	$datad = mysql_fetch_assoc($reqd);
    	if($datad['type'] == "0"){
    	$type_app = $idem_txt0060;}
    	else{
    	$type_app = $idem_txt0061;}
    comment faire pour savoir quelle est la partie du code la plus consommatrice,
    ou qui prend le plus de temps ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour répondre purement à la question, tu as un exemple ici :
    http://php.net/manual/fr/function.microtime.php

    Mais inutile de mesurer pour voir que tu fais trop de requête, en particulier, des requêtes dans des boucles.

    Par exemple :

    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
     
    $sqlc = sprintf("SELECT A.id_adh, B.id_adh, B.id_log, C.id_log, C.up_nom 
    			FROM BDD_adherent A
    			INNER JOIN BDD_logement B ON A.id_adh = B.id_adh
    			INNER JOIN BDD_photo C ON B.id_log = C.id_log
    			WHERE A.id_adh=%s", quote_smart($id_adh));
     
     
     
    $sqlc = sprintf("SELECT A.id_adh, B.id_adh, B.id_log, C.id_log, C.up_nom 
    			FROM BDD_adherent A
    			INNER JOIN BDD_logement B ON A.id_adh = B.id_adh
    			INNER JOIN BDD_photo C ON B.id_log = C.id_log
    			WHERE A.id_adh=%s", quote_smart($id_adh));
     
     
    	$sqld = sprintf("SELECT A.id_adh, B.id_log, B.id_adh, B.description, B.type, B.pers
    	FROM BDD_adherent A
    	INNER JOIN BDD_logement B ON A.id_adh = B.id_adh
    	WHERE A.id_adh=".$id_adh);
    Deux fois la même requête et la troisième qui est quasiment la même.

Discussions similaires

  1. [C++] Calcul du temps d'exécution
    Par Castagnems dans le forum C++
    Réponses: 7
    Dernier message: 12/01/2012, 12h46
  2. Calculer le temps d'exécution d'une requête
    Par BRAUKRIS dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/03/2007, 12h59
  3. Calculer le temps d'exécution d'un script
    Par pomgnon dans le forum C
    Réponses: 2
    Dernier message: 28/12/2006, 15h49
  4. Réponses: 3
    Dernier message: 11/03/2006, 15h35
  5. [C#] Calcul du temps d'exécution.
    Par lozzko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2005, 16h12

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