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 :

5s d'attente sur mes pages PHP


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut 5s d'attente sur mes pages PHP
    Bonjour,

    J'ai un petit soucis concernant mes pages php.

    Sur mon serveur dédié j'ai un temps d'attente de 4 à 5 secondes avant que la page commence à s'afficher.

    Firebug m'indique :



    En local il n'y a aucun problème de ce coté là (18 ms d'attente contre 4,44 sec sur le dédié sur la même page php).

    De plus, sur le dédié, j'ai un dossier admin/ et celui ci n'a que 160 ms d'attente, alors que je fais appel au même include de connection.

    Un ping vers le serveur me donne 49 ms.

    Quelqu'un sait comment peut-on isoler ce problème pour savoir d'où ça vient ?

    Merci

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Apparemment l'évènement load à l'air très long (4.95s), de même que loaded.

    As tu des appels à des fonctions JS dans le body, du genre : onload="maFunction()" ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    Apparemment l'évènement load à l'air très long (4.95s), de même que loaded.

    As tu des appels à des fonctions JS dans le body, du genre : onload="maFunction()" ?
    Non, pas de onload.

    Sinon, j'ai reconstruis étape par étape une de mes pages et le problème viendrait de 2 includes qui ajoutent 2,5 secondes de délai d'attente chacun.

    Pourquoi sur le serveur dédié ces includes ajoutent ces 5 secondes alors qu'en local il n'y a que 23 ms d'attente ?

    Sur le dédié memory_limit est à 8M alors qu'en local il est à 60M, ça pourrait venir de la ?

    Merci

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par Khleo
    Sur le dédié memory_limit est à 8M alors qu'en local il est à 60M, ça pourrait venir de la ?
    A mon avis, non. C'est une limite, et si elle était dépassée, tu aurais eu une erreur.

    Tu pourrais placer de simple echo time() ou microtime() à des endroits différents, comme en mettre au plus au niveau, de même que entre 1 include, etc ...
    Voir pourquoi pas faire une petite fonction qui calculerait le temps en 2 points aussi.

    Supprimer un include, pourquoi pas, mais ça risque de provoquer des erreurs plus bas.

    Tas des données misent en cache ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Tu pourrais placer de simple echo time() ou microtime() à des endroits différents, comme en mettre au plus au niveau, de même que entre 1 include, etc ...
    Voir pourquoi pas faire une petite fonction qui calculerait le temps en 2 points aussi.
    Le problème avec la fonction microtime(), c'est que si je le place sur la première ligne il m'indique 0 ms. Mon problème, c'est le temps d'attente avant la ligne 1...
    Tas des données misent en cache ?
    On voit ça où ?

    Merci

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le problème avec la fonction microtime(), c'est que si je le place sur la première ligne il m'indique 0 ms. Mon problème, c'est le temps d'attente avant la ligne 1...
    Alors là tu m'étonne.
    Tu dois faire erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo microtime();
    ?>
    Doit te renvoyer le temps en cours en milliseconde.
    Puis comment sais tu que le problème a lieu avant ta toute 1ère ligne ?

    En tout cas je parle bien de la toute 1ère ligne de ta page, que ce soit du Php que du HTML.

    Puis si tu parviens à affirmer que le problème a lieu avant la toute 1ère ligne de code, alors ce ça sous entend que ce n'est pas dans la (ou les) page(s) qu'il y a un problème, mais du serveur. (htaccess, php.ini, httpd.conf, etc ...)

    Ce qui semble peu probale, car firebug n'aurait jamais pu détecter cet écart de temps vu qu'il n'a aucune connaissance de ce qui ce passe sur ton serveur.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Puis si tu parviens à affirmer que le problème a lieu avant la toute 1ère ligne de code, alors ce ça sous entend que ce n'est pas dans la (ou les) page(s) qu'il y a un problème, mais du serveur. (htaccess, php.ini, httpd.conf, etc ...)
    Si ça vient de la page php, pourquoi le délai d'attente est-il de 5 secondes sur le dédié et de quelques ms en local alors qu'il s'agit de la même page ?

    Puis comment sais tu que le problème a lieu avant ta toute 1ère ligne ?
    Il s'agit d'un délai d'attente, le chargement de la page commence après ce délai, non ?

    Merci

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par Khleo
    Il s'agit d'un délai d'attente, le chargement de la page commence après ce délai, non ?
    Oui et non ...
    C'est Firebug qui t'indique ces lenteurs, et lui ce situe coté client, ton navigateur.
    Il ne pourra donc jamais te dire que c'est ton serveur qui en serait la cause.
    Enfin ... quoi que.

    FireBug analyse tout de même le temps de latence entre le moment ou tu lance la requête HTTP et le moment où tu reçois le contenu.
    Ensuite il analyse le temps que met le flux HTML à te parvenir au fure et à mesure.
    Il analyse aussi le temps que mets FireFox à afficher le contenu HTML. Ici il est plus précis que ça car il te dis quels sont les élément du DOM qui mettent du temps et les évènement (load et loaded).

    Apparemment il y a 4.44 sec. (attente), si je comprend bien. Mais ici on ne peu pas affirmer que la cause serait du code Php, cela peu très bien être le serveur Apache ??? ... ou même e système.
    Puis rien ne dit aussi que ce soit le réseau lui même qui est lent (modem, embouteillage sur le net, hébergeur saturé, etc ...).
    Pour ce cas, tu pourrais créer une page en pure HTML avec un simple "Hello Wold" et ensuite l'appeler, et voir ce qu'indique FireBug sur ce temps de latence.

    Ceci dit, je n'est jamais utilisé FireBug, du moins si mais pas effectué cette analise.
    Donc je ne parviens pas à bien saisir ce quil est indiqué :
    +1ms ----------- envoie
    +1ms -- 4.44s -- Attente
    +4.45 --19ms -- Réception

    Il a l'air en tout cas d'avoir au moins 4 secondes (4.45) avant de recevoir le tout 1er contenu.

    Ce qui fait que mettre des temps sur certaines partie de ta page pourrait être de bon indicateurs, car il ne faut pas perdre de vu que tous les codes Php (sans exceptions) seront interprétés en tout 1er avant que le serveur envoie le moindre contenu HTML.

    Si tu as un code php très long, ça peu être la cause des 4 secondes, et il peut très bien être sur la dernière ligne de ta page.

    Donc si tu affiche le temps en Php de la toute 1ère ligne de code de ta page et de la dernière ligne, en faisant la différence tu obtiendras le temps qu'a mis le serveur pour interprété cette page.
    La page c'est l'intégralité du code, tous les include/require y compris.

    Ensuite tu analyse tout ça entre ton fonctionnement en local et serveur, sur plusieurs page différentes, voir des heures différentes, il sera peut être possible de tirer des conclusions.

    Bon, tout ceci a tout de même ces limites, car de l'Ajax ou autre iframe faussent l'analyse de tout ça.
    Si c'est le cas, les supprimer (provisoirement) serait la 1ère chose à faire.

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Salut,

    J'ai mis 2 microtime() sur ma page:

    Celui sur la première ligne indique 21 ms,
    celui sur la dernière ligne indique 76 ms.

    Si ça vient de la page php, pourquoi le délai d'attente est-il de 5 secondes sur le dédié et de quelques ms en local alors qu'il s'agit de la même page ?

    Le délai d'attente vient du code présent dans mes includes sur ma page (150 lignes et 100 lignes avec quelques requêtes), le code n'est pas super complexe (1 ou 2 requêtes SELECT, 2 conditions if et de l'HTML)

    Pourquoi ce code augmente t'il le délai d'attente de la page ?

    Merci

    Include 1:

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    <?php
    if (!$CodeMembre)
    {
    	?>
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td height="20" style="background-color:#FBFBFB;" class="TitreBlok"><span class="TitreMenuDroite"><strong>Me connecter</strong></span></td>
                    </tr>
                  </table>
                  <form id="form1" name="form1" method="post" action="MeLogger.php">
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td width="45%" height="30" align="right">E-Mail</td>
                        <td height="30">&nbsp;</td>
                        <td width="45%" height="30" align="left"><input name="mailconnect" type="text" id="mailconnect" size="15" /></td>
                      </tr>
                      <tr>
                        <td height="30" align="right">Mot de passe</td>
                        <td height="30">&nbsp;</td>
                        <td height="30" align="left"><label>
                          <input name="passconnect" type="password" id="passconnect" size="15" />
                        </label></td>
                      </tr>
                      <tr>
                        <td height="35" colspan="3" align="center"><label>
                          <input type="submit" name="button" id="button" value="Me connecter" class="gbtn" />
                        </label></td>
                        </tr>
                      <tr>
                        <td height="35" colspan="3" align="right"><a rel="nofollow" class="LienGestion" href="inscription.php">S'inscrire maintenant</a> / <a rel="nofollow" class="LienGestion" href="mot.php">Mot de passe oublié ?</a></td>
                      </tr>
                    </table>
              </form>
        <?php
    }
    else
    {
    	?>
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td height="20" style="background-color:#FBFBFB;" class="TitreBlok"><span class="TitreMenuDroite"><strong>Mes catégories</strong></span></td>
                    </tr>
                  </table>
                  <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                    <tr onmouseover="this.style.backgroundColor='#F4F4EE'" onmouseout="this.style.backgroundColor=''">
                      <td width="30" align="center"></td>
                      <td height="30" align="left"><a class="LienMenuDroite" href="start.php"><strong>Afficher toutes mes actualités</strong></a></td>
                      <td align="left"><strong><a class="LienDetails" href="start.php?<?php echo "OnlyNews=1"; ?>">
                        <?php if ($R_NbNewItem > 0) { echo "<span id = \"NbNewItemCateg\">$R_NbNewItem</span>"; } ?>
                        </a></strong></td>
                      </tr>
                    <?php
    			$select_categ_sql = "
    			SELECT CodeCateg, NomCateg, LastVisit, (SELECT COUNT(*)
    													FROM item, posseder
    													WHERE posseder.CodeCateg = categorie.CodeCateg
    													  AND posseder.CodeFlux = item.CodeFlux
    													  AND item.CodeItem NOT IN (SELECT CodeItem FROM afficher WHERE CodeMembre = '$CodeMembre')) AS NewItem
    			FROM categorie
    			WHERE CodeMembre = '$CodeMembre'
    			ORDER BY NomCateg
    			";
    			$select_categ = mysql_query($select_categ_sql) or die (mysql_error());
    			if (mysql_num_rows($select_categ) == 0) 
    			{
    			   //echo "Aucune ligne trouvee, rien a afficher";
    			}
    			else
    			{
    				while ($rows = mysql_fetch_assoc($select_categ))
    				{
    					$R_CodeCateg = $rows["CodeCateg"];
    					$R_NomCateg = $rows["NomCateg"];
    					$R_NewItem = $rows["NewItem"];
    					$R_LastVisit = $rows["LastVisit"];
    			?>
                    <tr onmouseover="this.style.backgroundColor='#F4F4EE'" onmouseout="this.style.backgroundColor='#FBFBFB'">
                      <td width="30" align="center"><a onclick="Effect.SlideDown('SousCateg<?php echo "$R_CodeCateg"; ?>'); return false;"><img src="img/plus.png" width="12" height="12" border="0" /></a></td>
                      <td height="30" align="left"><a class="LienMenuDroite" href="start.php?<?php echo "kw=".str_replace(" ", "-", $R_NomCateg)."&CodeCateg=$R_CodeCateg"; ?>"><?php echo "$R_NomCateg"; ?></a></td>
                      <td width="25" align="left"><strong><a class="LienDetails" href="start.php?<?php echo "CodeCateg=$R_CodeCateg&OnlyNews=1"; ?>">
                        <?php if ($R_NewItem > 0) { echo "<span id='Categ$R_CodeCateg'>$R_NewItem</span>"; }  ?>
                        </a></strong></td>
                      </tr>
                    <tr id="SousCateg<?php echo "$R_CodeCateg"; ?>" <?php if ($G_CodeCateg != $R_CodeCateg AND $R_CodeCateg != $R_CodeCategHead) { echo "style=\"display:none\""; } ?>>
                      <td height="30" colspan="3" align="center"><?php
    				$select_flux_sql = "
    				SELECT this.CodeFlux AS CodeFlux, TitreFlux, (SELECT COUNT(*) 
    															  FROM item, ajouter, flux
    															  WHERE flux.CodeFlux = ajouter.CodeFlux
    																AND item.CodeFlux = flux.CodeFlux
    																AND flux.CodeFlux = this.CodeFlux
    																AND item.CodeItem NOT IN (SELECT CodeItem FROM afficher WHERE CodeMembre = '$CodeMembre')
    															  ) AS NewItem, NomFlux
    				FROM ajouter, flux AS this, posseder
    				WHERE ajouter.CodeMembre = '$CodeMembre'
    				  AND ajouter.CodeFlux = this.CodeFlux
    				  AND posseder.CodeFlux = this.CodeFlux
    				  AND posseder.CodeCateg = '$R_CodeCateg'
    				";
    				$select_flux = mysql_query($select_flux_sql) or die (mysql_error());
    				if (mysql_num_rows($select_flux) == 0) 
    				{
    				   //echo "Aucune ligne trouvee, rien a afficher";
    				}
    				else
    				{
    					while ($rows = mysql_fetch_assoc($select_flux))
    					{
    						$R_TitreSite = $rows["TitreFlux"];
    						$R_CodeFlux = $rows["CodeFlux"];
    						$R_NewItem = $rows["NewItem"];
    						$R_NomFlux = $rows["NomFlux"];
    						if ($R_NomFlux)
    						{
    							$R_TitreSite = $R_NomFlux;
    						}
    				?>
                        <table onmouseover="this.style.backgroundColor='#F4F4EE'" onmouseout="this.style.backgroundColor='#FBFBFB'" width="100%" border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td width="30"></td>
                            <td width="15" align="left"><img src="img/icon/puce.png" width="9" height="9" /></td>
                            <td align="left"><a class="LienMenuDroite" href="start.php?CodeFlux=<?php echo "$R_CodeFlux"; ?>">
                              <?php if ($R_NewItem > 0) { echo "<strong>$R_TitreSite</strong>"; } else { echo "$R_TitreSite"; }  ?>
                              </a></td>
                            <td width="25" height="25" align="left"><a class="LienDetails" href="start.php?CodeFlux=<?php echo "$R_CodeFlux"; ?>&amp;OnlyNews=<?php echo "1"; ?>">
                              <?php if ($R_NewItem > 0) { echo "<strong><span id = 'FluxCateg$R_CodeFlux'>$R_NewItem</span></strong>"; } ?>
                              </a></td>
                            </tr>
                          </table>
                        <?php
    					}
    					mysql_free_result($select_flux);
    				}
    			  ?></td>
                      </tr>
                    <?php
    				}
    			}
    			?>
                    <tr>
                      <td height="30" colspan="3" align="right"><a class="LienGestion" href="gestion_categ.php">Gérer mes catégories</a> / <a onmouseover="this.style.cursor='pointer';" onclick="AjoutCateg ();" class="LienGestion">Ajouter une catégorie<br />
                        </a></td>
                      </tr>
                    </table>
        <?php
    }
    ?>
    Include 2:

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <?php
    if (!$CodeMembre)
    {
    	?><br /><span class="TitreMenuDroite" ><strong>Visite guidée de x</strong></span><br /><br /><object width="270" height="166"><param name="movie" value="http://www.youtube.com/x/x&hl=fr_FR&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/x&hl=fr_FR&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="270" height="166"></embed></object>
    <br />
    <br />
    <?php
    }
    else
    {
    	?>
     
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="20" class="TitreBlok">&nbsp;</td>
      </tr>
      <tr>
        <td height="20" class="TitreBlok"><span class="TitreMenuDroite" ><strong>Mes abonnements</strong></span></td>
      </tr>
    </table>
    <table  width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
      <?php
    			$select_flux_sql = "
    			SELECT this.CodeFlux AS CodeFlux, TitreFlux, ajouter.NomFlux AS NomFlux, (
    
    				SELECT COUNT( * )
    				FROM item, ajouter, flux
    				WHERE flux.CodeFlux = ajouter.CodeFlux
    				AND item.CodeFlux = flux.CodeFlux
    				AND flux.CodeFlux = this.CodeFlux
    				AND item.CodeItem NOT
    					IN (
    					
    					SELECT CodeItem
    					FROM afficher
    					WHERE CodeMembre = '$CodeMembre'
    					
    					)
    					
    			) AS NewItem
    			FROM ajouter, flux AS this
    			WHERE ajouter.CodeMembre = '$CodeMembre'
    			  AND ajouter.CodeFlux = this.CodeFlux
    			ORDER BY NomFlux
    			";
    			$select_flux = mysql_query($select_flux_sql) or die (mysql_error());
    			if (mysql_num_rows($select_flux) == 0) 
    			{
    			   //echo "Aucune ligne trouvee, rien a afficher";
    			}
    			else
    			{
    				while ($rows = mysql_fetch_assoc($select_flux))
    				{
    					$R_CodeFlux = $rows["CodeFlux"];
    					$R_TitreSite = $rows["TitreFlux"];
    					$R_FaviconSite = $rows["FaviconSite"];
    					$R_AdresseSite = $rows["AdresseSite"];
    					$R_NewItem = $rows["NewItem"];
    					$R_NomFlux = $rows["NomFlux"];
    					if ($R_NomFlux)
    					{
    						$R_TitreSite = $R_NomFlux;
    					}
    			?>
      <tr onmouseover="this.style.backgroundColor='#F4F4EE'" onmouseout="this.style.backgroundColor='#FBFBFB'" >
        <td height="30" align="left"><a class="LienMenuDroite" href="start.php?CodeFlux=<?php echo "$R_CodeFlux&kw=".str_replace(" ", "-", str_replace("&", "-", strtolower(SupprimeHTML(TitreSite($R_CodeFlux, 1)))))."-".str_replace(" ", "-", str_replace("&", "-", strtolower(SupprimeHTML(TitreSite($R_CodeFlux, 2))))).""; ?>"><?php echo CoupeurTexte ("$R_TitreSite", 40); ?></a></td>
        <td width="25" align="center"><strong><a class="LienDetails" href="start.php?<?php echo "CodeFlux=$R_CodeFlux&OnlyNews=1"; ?>">
          <?php if ($R_NewItem > 0) { echo "<span id = 'Flux$R_CodeFlux'>$R_NewItem</span>"; } ?>
          </a></strong></td>
      </tr>
      <tr>
        <td height="5" background="img/separator.png" colspan="2"></td>
      </tr>
      <?php
    				}
    				mysql_free_result($select_flux);
    			}
    			if (NbAbonnement($CodeMembre) == 0)
    			{
    				?>
      <tr>
        <td height="30" colspan="2" align="center">Vous n'avez aucun abonnement.</td>
      </tr>
                    <?php
    			}
    			else
    			{
    				?>
      <tr>
        <td height="30" colspan="2" align="right"><a class="LienGestion" href="gestion_abonnement.php">Gérer mes abonnements</a></td>
      </tr>
                    <?php
    			}
    			?>
      <tr>
        <td style="height:100%" height="30" colspan="2" align="right">&nbsp;</td>
      </tr>
    </table>
    <?php
    }
    ?>
    <br />
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="40" colspan="2" class="TitreMenuDroite"><strong>x</strong></td>
      </tr>
      <tr>
        <td width="40"><img src="../img/mobile.jpg" width="40" height="40" /></td>
        <td align="right" style="text-align:justify;">x</td>
      </tr>
    </table>
    <br />
    <br />

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Celui sur la première ligne indique 21 ms,
    celui sur la dernière ligne indique 76 ms.
    Etonnant, tout de même.
    Je reste un peu dubitatif.

    Au fait, ça donne quoi quand tu fais un essai avec une page vierge pour ainsi dire (juste un Hello Wold) ? Y a t-il ce même temps de latence de 4s ?
    Si tu ne remarque pas ce phénomène sur une page vièrge, tu pourrais procéder de manière inverse, c'est à dire partir de cette page vièrge, et intégrer petit à petit les codes, et de manière judicieuse.
    Théoriquement tu devrais pouvoir détecter le ou les élément perturbateurs.

    Si ça vient de la page php, pourquoi le délai d'attente est-il de 5 secondes sur le dédié et de quelques ms en local alors qu'il s'agit de la même page ?
    Si j'avais la réponse je te l'aurais donnée depuis le début.
    Les raisons peuvent être multiple, mais n'ayant rien comme élément à part ce que tu me dis, c'est tout simplement impossible d'y répondre.


    As tu consulter tous les logs que tu dois avoir ? Apache, Php, MySQL, etc ...
    Les Bdd sont elles identiques ? Mêmes données ? As tu regardé via PhpMyAdmin (par exemple) sa taille total, des tables ? Les pertes ? N'y aurait il pas quelque chose d'anormal ?
    Utilise tu les sessions ? As tu jeté un oeil s'il y en aurait pas de trop si tu les gère ?
    As tu un outil statistique qui te donne un état complet du trafic ? N'y aurait il pas trop de trafique ? Des bots qui te "mangeraient" de la bande passante ?

    Bref ... si tu est en dédié, tu doit en avoir des outils pour vérifier.

    Puis as tu essayé ailleurs que chez toi ? Un(e) ami(e), famille, etc ...

  11. #11
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Au fait, ça donne quoi quand tu fais un essai avec une page vierge pour ainsi dire (juste un Hello Wold) ? Y a t-il ce même temps de latence de 4s ?
    Si tu ne remarque pas ce phénomène sur une page vièrge, tu pourrais procéder de manière inverse, c'est à dire partir de cette page vièrge, et intégrer petit à petit les codes, et de manière judicieuse.
    Théoriquement tu devrais pouvoir détecter le ou les élément perturbateurs.
    Oui j'ai fait ça, et le résultat est que ce sont 2 includes qui font ralentir le chargement de la page.

    Dedans il y a de l'ajax, mais je pense pas que ça soit du à ça car le php doit générer la page et le javascript se charge après.

    J'ai également essayé de supprimer les includes en copiant directement le code dans la page, donc le problème viendrait du code oublié au dessus.

  12. #12
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Dedans il y a de l'ajax, mais je pense pas que ça soit du à ça car le php doit générer la page et le javascript se charge après.
    Personnellement j'aurais supprimé/désactivé ce genre de truc en 1er, tout comme les iframe, et même tout ce qui est Javascript.
    Leur interprétation est différente selon les navigateurs, ça peu fausser son analyse.

    Tu dis rien concernant tes logs ? Bdd ?
    Y jeter ne serait ce qu'un oeil est important, ce sont des éléments automatiquement différents de ce que tu as en local.


    Aussi, as tu fais un "ping" sur ton site ?
    Même si tu commence à isoler le problème, faire le rapprochement entre les infos retournées par le ping et ceux de firebug peut être intéressant.

  13. #13
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Le ping me donne 49 ms.

    Je vais supprimer le javascript pour voir ce ça donne.

    Merci

  14. #14
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le ping me donne 49 ms.
    Du coup j'y mets des réserves sur les infos que te donne firebug

    Pour ma part, t'as pas trop le choix, et peu importe la technique, faut isoler le ou les éléments perturbateurs.
    Soit en partant d'une page vierge et tu intègre petit à petit, soit l'inverse, tu supprime petit à petit.

    Si tu remarque que c'est un include qui provoque cette lenteur, faut procéder de la même manière dans ce include.

    Vu que le temps est assez long, 4s, à un moment tu devrais percevoir des changements.

  15. #15
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Le temps d'attente vient des requêtes SQL présentent dans le code des includes (cf plus haut).

    En enlevant ces requêtes le temps d'attente redevient normal.

    Je trouve ça bizarre vu que les requêtes ne sont pas super complexe.

  16. #16
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le temps d'attente vient des requêtes SQL présentent dans le code des includes (cf plus haut).

    En enlevant ces requêtes le temps d'attente redevient normal.

    Je trouve ça bizarre vu que les requêtes ne sont pas super complexe.
    Isoler précisément le problème c'est déjà bien, je dirais même excellent.

    Post la ou les requêtes, peut être y verraient ont le problème.

    Mais comme tu ne remarque pas ce phénomène en local, alors la théorie veut que que tes 2 Bdd soient différentes, et cette différence en serait la cause, ou lié au problème.

    Regarde tes logs MySQL, ta Bdd : sa taille totale, taille de chaque table, mais aussi les pertes.
    J'ai déjà lu sur un forum quelqu'un annoncer des pertes énormes, mais alors impressionnant. Qui sait, c'est peut être ton cas.


    Aussi, pour garantir que ça vient vraiment de ta ou tes requêtes, faudrait obtenir juste le(s) SQL, et les exécuter directement dans ta Bdd coté serveur avec phpmyadmin par exemple.

    Ou alors faire une page php à part avec juste l'exécution du ou des requêtes, et voir combien de temps ça prend.
    Normalement tu devrais remarquer cette lenteur.

  17. #17
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Ok maintenant que j'ai ciblé mon problème (qui concerne en faite toutes les requêtes SQL) je vais pouvoir demander une aide plus précise.

    En tout cas merci de ton aide.

Discussions similaires

  1. probleme sur mes pages php wordpress
    Par marcito dans le forum Langage
    Réponses: 3
    Dernier message: 29/01/2012, 08h44
  2. Afficher du code html/php sur mes pages
    Par cuisto44000 dans le forum Langage
    Réponses: 4
    Dernier message: 21/08/2008, 00h56
  3. [Conception] Message d'attente sur une page en php
    Par gpsevasion dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/01/2007, 20h01
  4. Afficher un calendrier sur une page php
    Par griese dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/06/2006, 09h53
  5. [EasyPHP] visualisation de mes pages PHP
    Par gailup dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 31/05/2006, 13h12

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