Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1931 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Temps d'execution de requetes excessif :(

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Temps d'execution de requetes excessif :(

n°150872
Max Evans
Posté le 04-06-2002 à 13:50:03  profilanswer
 

Hello a tous :hello:
 
Je viens de faire un script de Livre d'Or, je me suis aidé de celui de PHPDébutant :)
 
Or, g comme un gros soucis :(
Les requetes mettent entre 5 et 10s pour s'executer !!!  :ouch:  
 
Je vois vraiment pas d'ou vient le pb :(
 
Voila le code, certes il n'est pas parfait, mais bon, de la a mettre 10s pour interpreter tout ca, ca m'etonne :(
 
<?
function getmicrotime(){  
  list($usec, $sec) = explode(" ",microtime());  
  return ((float)$usec + (float)$sec);  
}  
$time_start = getmicrotime();
?>
<?
require_once('../include/config.inc.php
9;);
require_once('../include/fonctions.php'
;
;);
if (connect($host,$user,$pass,$db)) {
 
$nb = 10;
 
if(empty($page)) $page = 1;
if(empty($total)){ // nombre total de résultats
 $sql = "select count(*) as qte from guestbook_data WHERE idparent='$id'";
 $req = @mysql_query($sql);
 $total = @mysql_result($req,"0","qte" );
}
$debut = ($page - 1) * $nb;
 
 
    // Requete ordonnant les messages par dates  
      $query = "SELECT date,pseudo,email,message FROM guestbook_data WHERE idparent='$id' ORDER BY id DESC LIMIT $debut,$nb";  
       
       // Execute la requete precedente  
      $result = mysql_query($query) or die('Erreur SQL : '.mysql_error());      
       
     
$sql = "SELECT * FROM guestbook WHERE idmembre='$id'";  
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
 
$data = mysql_fetch_array($req);
 
     
      ?>
 
<html>
<head>
<title>GuestBook</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<style>
  a:hover {  color: <? echo "$data[couleur_lien]"; ?>; text-decoration: none}
  a {  color: <? echo "$data[couleur_texte_message]"; ?>; text-decoration: none}
</style>
 
 
 
<body bgcolor="<? echo "$data[couleur_fond]"; ?>">
  <table width="100%" height="100%" ><tr>
    <td>  
      <p align="center"><font face=Verdana size="2">Notre  
        site - <a href="javascript:void(0)" onClick="window.open('formulaire.php?id=<? echo "$id"; ?>',null,'width=400,height=300, status=no, directories=no, toolbar=no, location=no, menubar=no, scrollbars=no, resizable=no';);">Laisser un Message</a> - Contacts</font>  
      </p>
      <p> </p>
     
         
      <?php  
      // Définit la boucle : tant qu'il y a des messages dans la BDD  
     while ($val = mysql_fetch_array($result)) {    ?>
      <table width="75%" border="1" bordercolor="<? echo "$data[border_color]"; ?>" bordercolordark="<? echo "$data[couleur_fond]"; ?>" align="center" cellspacing="0" cellpadding="3">
        <tr>  
          <td width="28%" bgcolor="<? echo "$data[couleur_cellule_1]"; ?>">  
            <p><font color="<? echo "$data[couleur_texte_haut]"; ?>" face="<? echo "$data[police]"; ?>" size="<? echo "$data[police_size]"; ?>">Posté  
              par <b>  
              <? echo "$val[pseudo]"; ?>
              </b> le  
              <? echo "$val[date]"; ?>
              </font>  
              <? $texte = nl2br(htmlentities("$val[message]" )); ?>
              <a href="mailto:<? echo "$val[email]"; ?>"><img src="images/mail.gif" border="0" alt="Envoyer un Mail" align="absmiddle"></a>  
              <img src="images/site.gif" width="16" height="16" align="absmiddle">  
            </p>
          </td>
        </tr>
        <tr>  
          <td colspan="2"><font color="<? echo "$data[couleur_texte_message]"; ?>" face="<? echo "$data[police]"; ?>" size="<? echo "$data[police_size]"; ?>">  
            <? echo "$texte"; ?>
            </font></td>
        </tr>
      </table>
      <br>
      <? }    
 
    ?>  
     
 
   </td></tr></table>
   <br>
 
<center><font color="<? echo "$data[couleur_texte_message]"; ?>" face="<? echo "$data[police]"; ?>" size="1"><?
$nbpages = ceil($total / $nb); // arrondi a l'entier superieur
 // on affiche les pages
 for($i = 1;$i <= $nbpages;$i ++){
  echo "<a href=\"index.php?id=$id&page=$i&total=$total\">[$i]</a>";
  if($i < $nbpages) echo " - ";
 }}
   mysql_close();       ?></font><br>
  <?    
$time_end = getmicrotime();  
$time = round($time_end - $time_start, 3);  
echo "<br><font color=\"$data[couleur_texte_message]\" face=\"$data[police]\" size=\"1\"> Page générée en $time secondes</font>";  
?></center>
</body>
</html>

 
Merchi de votre aide :jap:


Message édité par Max Evans le 06-04-2002 à 17:10:34

---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
mood
Publicité
Posté le 04-06-2002 à 13:50:03  profilanswer
 

n°150940
Max Evans
Posté le 04-06-2002 à 14:39:30  profilanswer
 
n°151010
Max Evans
Posté le 04-06-2002 à 16:04:05  profilanswer
 
n°151055
youdontcar​e
Posté le 04-06-2002 à 16:25:21  profilanswer
 

tu es sur quel hébergeur ? si c'est un gratos c'est sûrement normal ...

n°151086
Max Evans
Posté le 04-06-2002 à 16:52:07  profilanswer
 

Ben non, pour ce script, je suis en local :)
Chez moi, ca indique en gros 0.03s, ce ki est tres raisonable :)
 
Mais kand d'autres personnes viennent voir la page qui est sur mon PC, elles tapent ds les 5s :(
 
C pas normal, car la vitesse d'execution de requete devrait etre la meme chez eux et chez moi, par contre, l'affichage 'pur' de la page (Graphisme,etc) est plus long chez eux, mais la c normal, je fais que du 16 Ko/s :)
 
Sinon, je suis sur une piste :)
 
Quand je laisse plusieurs petits messages ds le livre, ca passe normalement, l'execution pour les voir est tres rapide :)
Par contre, si je mets un gros message, du type celui que je tape en ce moment, c la que le temps de génération de la page est purement hallucinant = 5-10s :(
 
Donc, je pense que c un pb pour extraire le texte de la base non ? :)
 
En tout cas, merci de ton aide ;) :jap:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°151097
youdontcar​e
Posté le 04-06-2002 à 17:00:40  profilanswer
 

bon, plusieurs pistes :
 
* vérifie que tu as bien une clé dans ta table.  si tu n'en as pas une requête comme "SELECT date,pseudo,email,message FROM guestbook_data WHERE idparent='$id' ..." va parcourir toute la table pour trouver l'idparent. là, il faut un index sur l'id parent.
 
* ce genre de trucs echo "$data[border_color]"; c'est mal, echo $data[...] (bref, sans les quotes) suffit.
 
* essaye sans faire la transformations : nl2br(htmlentities("$val[message]" )); , en affichant le texte brut. je préfère sauvegarder le texte transformé dans la db plutôt que de le transformer à l'affichage.
 
* ça dépend aussi de ton ordi, j'ai eu des pages php qui s'affichaient assez lentement chez moi (p2 350) et instantanément sur l'hébergeur.

n°151104
Max Evans
Posté le 04-06-2002 à 17:05:43  profilanswer
 

Donc, pour reprendre :
 

  • IDPARENT est bien indexé :)
  • Je viens a l'instant d'enlever tous les ", apparement, c la meme chose, ca rame autant :(
  • Pour le nl2br, etc, j'ai aussi testé sans, ca fais encore pareil :(
  • Pour le PC, c un Ahtlon 1.4 Ghz avec 512 Mo, et un DD 60 Go a 7200 t/min, je pense pas trop que le pb vienne de la, g des scripts qui marchent parfaitement :)


Voili voilou, encore merchi ;) :jap:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°151107
youdontcar​e
Posté le 04-06-2002 à 17:09:29  profilanswer
 

je suis à court d'idées ... apparemment ça à plus à faire avec mysql que php. essaye de changer le titre de ton topic pour être plus explicite.

n°151108
Max Evans
Posté le 04-06-2002 à 17:10:07  profilanswer
 

:)
Pour le titre, faut que je reflechisse la :D


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°151111
siewn
Posté le 04-06-2002 à 17:22:32  profilanswer
 

Max Evans a écrit a écrit :

:)
Pour le titre, faut que je reflechisse la :D  




 
tu mets des getmicrotime() - $starttime toutes les lignes pour voir exactement où ça rame.
ensuite si ça vient bien d'une requete.
tu fais un EXPLAIN de la requete pour en savoir un peu plus

mood
Publicité
Posté le 04-06-2002 à 17:22:32  profilanswer
 

n°151113
Max Evans
Posté le 04-06-2002 à 17:23:43  profilanswer
 

siewn a écrit a écrit :

 
 
tu mets des getmicrotime() - $starttime toutes les lignes pour voir exactement où ça rame.
ensuite si ça vient bien d'une requete.
tu fais un EXPLAIN de la requete pour en savoir un peu plus  




 
Ouep, tient c pas bete, je v tester ca :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°151118
Max Evans
Posté le 04-06-2002 à 17:26:50  profilanswer
 

Max Evans a écrit a écrit :

 
 
Ouep, tient c pas bete, je v tester ca :)  




 
Arf, ben chez moi, ca tourne tout le temps autour de 0.015s :(
Je peux pas vraiment voir ou ca foire :(
 
Sinon, c koi le coup du explain ? :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°151124
youdontcar​e
Posté le 04-06-2002 à 17:29:54  profilanswer
 

Max Evans a écrit a écrit :

Arf, ben chez moi, ca tourne tout le temps autour de 0.015s :(


passe par un proxy : http://directory.google.com/Top/Co [...] Free/?tc=1
 
et rentres-y ton ip + le chemin de ton code.

n°151125
siewn
Posté le 04-06-2002 à 17:30:04  profilanswer
 
n°151136
Max Evans
Posté le 04-06-2002 à 17:46:01  profilanswer
 

pour explain, ca a l'air d'etre sous Linux non ?
Je suis sous Windows, et je vois po trop comment faire :(
 
youdontcare >> Merchi pour le proxy, je teste :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°151155
ethernal
Chercheur de vérité...
Posté le 04-06-2002 à 18:09:24  profilanswer
 

à tout hasard : tes champs sont de quel type ?
regarde l'article posté par siewn

n°151157
greg@frees​tarthu
Posté le 04-06-2002 à 18:11:09  profilanswer
 

youdontcare a écrit a écrit :

 
* essaye sans faire la transformations : nl2br(htmlentities("$val[message]" )); , en affichant le texte brut. je préfère sauvegarder le texte transformé dans la db plutôt que de le transformer à l'affichage.




juste par curiosité, comment tu fais, apres pour éditer le msg ? (si dans ton forum tu as la possibilité d'editer les posts comme sur hfr?)

n°151165
youdontcar​e
Posté le 04-06-2002 à 18:18:40  profilanswer
 

greg@freestarthu a écrit a écrit :

juste par curiosité, comment tu fais, apres pour éditer le msg ? (si dans ton forum tu as la possibilité d'editer les posts comme sur hfr?)


je fais la transformation inverse ...

n°151170
greg@frees​tarthu
Posté le 04-06-2002 à 18:22:37  profilanswer
 

youdontcare a écrit a écrit :

je fais la transformation inverse ...  




et donc si ton user avait ecrit explicitement <br> dans son post, quand il l'edite il a un saut de ligne à la place
remarque, on s'en fout ;-)

n°151184
youdontcar​e
Posté le 04-06-2002 à 18:29:19  profilanswer
 

non, le message passe par htmlentites() avant que son poste soit affiché. donc c'est converti en < et ça ne devient pas un saut à la ligne lors de la conversion inverse.

n°151197
greg@frees​tarthu
Posté le 04-06-2002 à 18:39:11  profilanswer
 

youdontcare a écrit a écrit :

non, le message passe par htmlentites() avant que son poste soit affiché. donc c'est converti en < et ça ne devient pas un saut à la ligne lors de la conversion inverse.  



mais un <:br> :-)

n°151201
youdontcar​e
Posté le 04-06-2002 à 18:42:19  profilanswer
 

greg@freestarthu a écrit a écrit :

mais un <:br> :-)


:D <br> -> &lt;br&gt; .
 
tu ne trouveras pas de texte x qui, subissant une transformation f pour l'affichage, n'arrive pas à obéir à f-1(f(x)) == x.

n°151205
greg@frees​tarthu
Posté le 04-06-2002 à 18:45:13  profilanswer
 

youdontcare a écrit a écrit :

:D <br> -> &lt;br&gt; .
 
tu ne trouveras pas de texte x qui, subissant une transformation f pour l'affichage, n'arrive pas à obéir à f-1(f(x)) == x.  




euh
mais donc tu passes par htmlentities dans l'autre sens quand il edite son msg... mais s'il a mis < en postant...? :-))

n°151207
youdontcar​e
Posté le 04-06-2002 à 18:48:24  profilanswer
 

oups, je confondais avec htmlspecialchars(). mais je ne comprends ni ta dernière question ni où tu veux en venir.

n°151210
greg@frees​tarthu
Posté le 04-06-2002 à 18:51:51  profilanswer
 

youdontcare a écrit a écrit :

oups, je confondais avec htmlspecialchars().




Citation :


mais je ne comprends ni ta dernière question


-->si tu transforme les <br> de ton user en <br>, tres bien. mais qu'arrive t'il s'il poste son msg en tapant <.. euh ouais ok ct une question con, j'ai capté.... fatigué :/

Citation :


ni où tu veux en venir.  


--> nulle part...

n°151212
youdontcar​e
Posté le 04-06-2002 à 18:55:05  profilanswer
 

:)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Temps d'execution de requetes excessif :(

 

Sujets relatifs
Erreur lors de requêtes SQL chez Free[PHP] Pb pour passer en parametre du code html
[PHP] forcer le download d'un fichier PDF???[PHP] Lister les fichiers d'un répertoire...
[PHP et JavaScript et aussi ASP tant qu'a faire] fonctions -> 2 return[PHP] prob de permission sous dossier
[PHP] c koi la notation === ???[PHP] URL encodées en base64, récupérer les variables ?
[JS][PHP] Mise à jour de la page seon le select du formulaireComment récupérer les données d'une base Access, avec PHP ?
Plus de sujets relatifs à : [PHP] Temps d'execution de requetes excessif :(


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)