Optimiser 6 requêtes...

  • Auteur de la discussion Auteur de la discussion JeunZ
  • Date de début Date de début
WRInaute accro
bonjour,

dans un fichier qui est appelé plusieurs milliers de fois par jour j'effectue ces 6 requetes (entre autre)

Code:
list($nbrt) = mysql_fetch_array(mysql_query("SELECT MAX(id) FROM membres", $db), MYSQL_NUM); 
list($nbr3t) = mysql_fetch_array(mysql_query("SELECT MAX(post_id) FROM dotclear_post", $db), MYSQL_NUM); 
list($nbr4t) = mysql_fetch_array(mysql_query("SELECT MAX(comment_id) FROM dotclear_comment", $db), MYSQL_NUM); 

list($nbr) = mysql_fetch_array(mysql_query("SELECT count(id) FROM membres", $db), MYSQL_NUM); 
list($nbr3) = mysql_fetch_array(mysql_query("SELECT count(post_id) FROM dotclear_post", $db), MYSQL_NUM); 
list($nbr4) = mysql_fetch_array(mysql_query("SELECT count(comment_id) FROM dotclear_comment", $db), MYSQL_NUM);

les max(id) et count(id) de 3 tables en fait.

Vaut il mieux tout regrouper en une seule requete? Y a t'il une fonction spéciale qui renvoit ces valeur et d'une façon plus optimisée?
 
WRInaute impliqué
Re: Optimiser 6 requetes...

JeunZ a dit:
Code:
list($nbrt) = mysql_fetch_array(mysql_query("SELECT MAX(id) FROM membres", $db), MYSQL_NUM); 
list($nbr3t) = mysql_fetch_array(mysql_query("SELECT MAX(post_id) FROM dotclear_post", $db), MYSQL_NUM); 
list($nbr4t) = mysql_fetch_array(mysql_query("SELECT MAX(comment_id) FROM dotclear_comment", $db), MYSQL_NUM); 

list($nbr) = mysql_fetch_array(mysql_query("SELECT count(id) FROM membres", $db), MYSQL_NUM); 
list($nbr3) = mysql_fetch_array(mysql_query("SELECT count(post_id) FROM dotclear_post", $db), MYSQL_NUM); 
list($nbr4) = mysql_fetch_array(mysql_query("SELECT count(comment_id) FROM dotclear_comment", $db), MYSQL_NUM);

Ce que je ferais, c'est écrire les valeurs dans un fichier texte qui seraient mis à jour lorsque nécessaire c'est à dire lorsqu'il y a un nouveau membre, un nouveau post ou un nouveau commentaire.
 
WRInaute accro
Ca serait chiant à coder car les blogs s'ouvrent et se ferment comme des petits pains, idem pour les parutions et les commentaires... La fonction count et max sont vraiment utile à ce niveau.

Mais je pense que regrouper mes 6 requetes en une seule permettraient de consommer moins de ressources non? Dans un premier temps en attendant effectivement de trouver un autre système que celui de la base de donnée...
 
WRInaute impliqué
JeunZ a dit:
Ca serait chiant à coder car les blogs s'ouvrent et se ferment comme des petits pains, idem pour les parutions et les commentaires...

15 minutes pour coder tout ça, il suffit de mettre des hook aux endroits qui vont bien.
 
WRInaute impliqué
yep a dit:
c'est quoi des 'hook' ?

C'est des fonctions qui vont en appeler dautres ;-)

Plus sérieusement, c'est tout simplement placer une fonction à un endroit stratégique qui déclenche un événement.

Par exemple, après l'insertion d'un commentaire qui se fait par la méthode blog::addPost, on rajoute un appel à une fonction qui lève un événement du genre:
Code:
$GLOBALS['EVTMANAGER']->notify(ADDPOST, $post);

Dans la méthode notify, on appel tous les objets ou fonctions qui ont demandé à écouter cette événement. Ainsi on peut effectuer des actions à chaque fois qu'un post est ajouté.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut