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

  FORUM HardWare.fr
  Programmation
  PHP

  Aider moi à optimiser ma fonction Listbox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aider moi à optimiser ma fonction Listbox

n°989557
AGA
La boîte à Bokeh!
Posté le 22-02-2005 à 10:23:10  profilanswer
 

Code :
  1. function ListBox(&$valeurs,$index,$nom)
  2. {
  3. $res="\n\t<select name=\"$nom\">";
  4. foreach( $valeurs as $key => $valeur)
  5. {
  6.  $select = ($key==$index) ? ' selected=selected' : '';
  7.  $res.="\n\t\t<option value=\"".$key."\"".$select.">$valeur</option>";
  8. }
  9. $res.="\n\t</select>\n\t";
  10. return $res;
  11. }
  12. function SelectDB($db, $index=0)
  13. {
  14.  $sql='SELECT column1, column2 FROM table order column1';
  15.  $res=mysql_query($sql,$db);
  16.  while($myrow=mysql_fetch_array($res))
  17.  {
  18.   $tab[$myrow[0]]=$myrow[1];
  19.  }
  20.  return ListBox($tab,$index,'listbox');
  21. }


 
Salut,
 
je n'arrive pas à optimiser ce code, dès l'instant où j'ai appel à deux trois fonctions appelant ListBox, ma page passe à 4sec de génération.  
 
:/

mood
Publicité
Posté le 22-02-2005 à 10:23:10  profilanswer
 

n°989566
Xav_
The only one...
Posté le 22-02-2005 à 10:32:01  profilanswer
 

je pense que c'est plus un appel répété de requete SQL que de ta fonction PHP qui allourdi le temps de génération...
 
Juste comme ça, c'est pas plutot "oder by" que "order" dans ton select ???


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°989571
AGA
La boîte à Bokeh!
Posté le 22-02-2005 à 10:35:00  profilanswer
 

C'est bien order by. ;)
 
Je sais pas mais quand je produis du html on the rock, sans passer par ma fonction ça va plus vite, or y a autant de requêtes SQL.
 
:/
 

n°989580
AGA
La boîte à Bokeh!
Posté le 22-02-2005 à 10:40:20  profilanswer
 

Bon j'ai fait un essai.
ça

Code :
  1. <?php
  2. include('haut.php');
  3. $t=SelectDB($db, $index=0);
  4. $t=SelectDB($db, $index=0);
  5. $t=SelectDB($db, $index=0);
  6. $t=SelectDB($db, $index=0);
  7. include('bas.php');


ça donne 0.07secondes
 
alors que ça

Code :
  1. <?php
  2. include('haut.php');
  3. echo SelectDB($db, $index=0);
  4. echo SelectDB($db, $index=0);
  5. echo SelectDB($db, $index=0);
  6. echo SelectDB($db, $index=0);
  7. include('bas.php');


ça donne 3.69sec, donc c'est pas ma fonction qui alourdit? mais l'affichage?
Merci.

n°989586
Xav_
The only one...
Posté le 22-02-2005 à 10:45:19  profilanswer
 

tiens, c'est bizarre...
tes calcul de temps sont fait avec un ecart de timestamps dans ton script ?


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°989590
Xav_
The only one...
Posté le 22-02-2005 à 10:49:35  profilanswer
 

mais je pense quand meme que c'est dut à la requete, dans un cas le cache de MySQL doit fonctionner et pas dans l'autre...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°989602
AGA
La boîte à Bokeh!
Posté le 22-02-2005 à 11:01:08  profilanswer
 

Dans haut.php :
$tps_start = get_microtime();
 
 
Dans bas.php:
$tps_end = get_microtime();
$tps = $tps_end - $tps_start;
$tps2=@rounder($tps);

n°989615
Xav_
The only one...
Posté le 22-02-2005 à 11:15:42  profilanswer
 

ça donne quoi si tu compare le temps de:

Code :
  1. <?php
  2. include('haut.php');
  3. echo SelectDB($db, $index=0);
  4. echo SelectDB($db, $index=0);
  5. echo SelectDB($db, $index=0);
  6. echo SelectDB($db, $index=0);
  7. include('bas.php');
  8. ?>


 
avec celui de:

Code :
  1. <?php
  2. include('haut.php');
  3. $t= SelectDB($db, $index=0);
  4. echo $t;
  5. echo $t;
  6. echo $t;
  7. echo $t;
  8. include('bas.php');
  9. ?>


 
pour voir si c'est "l'affichage" a proprement parler (le echo) ou le fait que tu appel ta fonction dans le echo plutot que de stocker les valeurs...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°989618
ratibus
Posté le 22-02-2005 à 11:17:57  profilanswer
 

Salut
 
T'as beaucoup de valeurs dans tes listes ?

n°989764
AGA
La boîte à Bokeh!
Posté le 22-02-2005 à 13:39:57  profilanswer
 

effectivement, sur une des LB j'ai 802 enregistrement.
Si je fais un essai sans celle-ci ça reste à 0.07sec.

mood
Publicité
Posté le 22-02-2005 à 13:39:57  profilanswer
 

n°989773
AGA
La boîte à Bokeh!
Posté le 22-02-2005 à 13:46:05  profilanswer
 

Pour Xav_ :
Le premier cas : 4 executions successives  : temps entre 4.74 et 5.88.
 
Deuxième cas : 4 execution : sensiblement les mêmes temps.

n°989783
Xav_
The only one...
Posté le 22-02-2005 à 13:57:58  profilanswer
 

[quote=989764,0,10,1085]effectivement, sur une des LB j'ai 802 enregistrement.
Si je fais un essai sans celle-ci ça reste à 0.07sec.[/quote]
 
ha ben oui, du coup...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°989809
ratibus
Posté le 22-02-2005 à 14:12:13  profilanswer
 

C'est le code HTML généré qui est trop gros :)
 
Essaie avec ça en première instruction  :

Code :
  1. ob_start('ob_gzhandler');


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

  Aider moi à optimiser ma fonction Listbox

 

Sujets relatifs
Variable Fonctionlancer manuellement une fonction avec un CCmdUI* en parametres
Fonction qui retourne différent type de valeur.Comment créer une fonction personnalisée MAX?
problème avec fonction FOREACHFonction tri qui plante mon code
Peut etre simple si une fonction existefonction javascript pour ouvrir un explorer de fichier
qui peut m'aider s'il vous plait !!!utiliser fonction mail() chez free
Plus de sujets relatifs à : Aider moi à optimiser ma fonction Listbox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR