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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MySQL] compter nombre requetes SQL ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/MySQL] compter nombre requetes SQL ?

n°1489326
welcominh
Posté le 10-12-2006 à 23:13:39  profilanswer
 

Bonjour,
 
J'ai un site hébergé sur Free. Parfois à certaines heures de la journée il rame, voire ca met "internal server error". Il faut alors rafraichir pour espérer avoir la page completement chargée.
 
Du coup j'aimerais compter le nombre de requetes SQL à la BDD pour chaque page pour par exemple l'afficher en bas de page, dans le footer. Je pourrais parcourir toutes mes pages et chercher à chaque fois la fonction mysql_query et créer une variable et l'incrémenter apres chaque requete. Mais bon pas très astucieux  :sweat:  
 
Y a-t-il un moyen de compter le nombre de requetes? une fonction PHP qui fait ca, ou autre?
 
Merci pour votre aide  :jap:

mood
Publicité
Posté le 10-12-2006 à 23:13:39  profilanswer
 

n°1489692
welcominh
Posté le 11-12-2006 à 17:07:13  profilanswer
 

up?

n°1489743
MS-DOS_199​1
www.newbie-project.net
Posté le 11-12-2006 à 17:51:54  profilanswer
 

Ben c'est à ma connaissance le seul moyen de procéder :/
 
le plus simple est bien sûr d'appeler une fonction personnalisée "do_query" (par exemple, quand on n'a pas de classe d'abstraction DB) dans laquelle tu incrémentes ta variable avant de retourner le résultat de ta requête, ça t'évites de récrire tes scripts à chaque mise à jour de l'appli ;)

n°1489853
welcominh
Posté le 11-12-2006 à 21:55:17  profilanswer
 

c'est l'idée que j'avais en tete avant de poster ce topic, mais bon j'espérais une fonction toute faite  :D.
Mais bon je viens de coder cette solution et ca a été bien simple finalement  [:aztechxx]
 
merci pour ton info  [:amel_the_white]


---------------
Direct-download.com, le moteur de recherche pour Mega
n°1489854
vanadium
N° Atomique : 23
Posté le 11-12-2006 à 21:59:28  profilanswer
 

Si tu utilises une couche d'abstraction de la base de données (classe pour gérer les requetes mysql), il est très facile de compter les requêtes SQL puisque toutes passent par les méthodes de la classe.
Il te suffit ensuite de créer une classe 'Logger' par exemple, qui se charge d'incrementer un attribut compteur à chaque appel de la méthode pour faire une requête SQL.
Les choses sont faciles quand le code est bien conçu. :D
 
L'exemple que j'ai donné est celui que j'ai utilisé dans mon script Freeglobes, jette un coup d'oeil au code source si jamais tu veux avoir un exemple de comment faire. ;)

n°1489914
welcominh
Posté le 12-12-2006 à 00:56:08  profilanswer
 

merci bien je pense avoir à peu près compris la logique  :jap:


---------------
Direct-download.com, le moteur de recherche pour Mega
n°1489916
welcominh
Posté le 12-12-2006 à 01:45:38  profilanswer
 

un probleme arrive rarement seul  :pfff:
Après avoir codé ma petite fonction "requete_sql", je me trouve confronté à un nouveau probleme: les requetes sql ne sont plus échappées correctement.

 

Voici le code de ma fonction:

Code :
  1. function requete_sql($requete)
  2. {
  3.       //----incrémente le nombre de requetes SQL
  4.      
  5.     global $nbr_requetes_sql;
  6.    
  7.     if(!isset($nbr_requetes_sql))
  8.       $nbr_requetes_sql= 1;
  9.     else
  10.       $nbr_requetes_sql++;
  11.      
  12.    
  13.       //----retourne résultat requete
  14.      
  15.     $req_fonction_requete= mysql_query($requete) or die(mysql_error());
  16.     return ($req_fonction_requete);
  17. }
 

Avant j'avais ma requete du style: (ost: original soundtrack, au passage pour comprendre, au cas où)

Code :
  1. $ost= "select * from ost where nom='$nom_ost' ";
  2. $req_ost= mysql_query($ost) or die(mysql_error());
 

En appliquant ma fonction "requete_sql", j'obtiens donc:

Code :
  1. $req_ost= requete_sql($ost);
 

Ca marche nikel, sauf quand le $nom_ost contient des caractères spéciaux du genre quotes simples. Apparemment avant, c'est comme si le mysql_query échappait automatiquement juste ce qu'il fallait. Je crois que ce qui était exécuté était:

Code :
  1. "select * from ost where nom='j\'aime la vie' ";
 

Avec ma fonction, le mysql_query ne semble pas échapper l'apostrophe du "j'aime". Pourtant la requete reste la meme, la fonction ne fait qu'ajouter une étape de plus  [:airforceone]. Si je veux échapper avec une fonction php, ca échappe tout. Donc je suis un peu dos au mur  :sweat:

 

Avez-vous une idée de comment je peux résoudre ça? je ne vois vraiment pas là, à part peut-être modifier mes requetes SQL, ce qui est le dernier de mes recours.

 

Je suis désolé de vous solliciter tant :/. Merci pour votre aide.


Message édité par welcominh le 12-12-2006 à 02:12:49

---------------
Direct-download.com, le moteur de recherche pour Mega
n°1489920
leflos5
On est ou on est pas :)
Posté le 12-12-2006 à 03:25:34  profilanswer
 

Je t'arrête tout de suite, c'est quoi ce vilain global qui pue :o
 
En quoi tu as besoin d'avoir accès à cette valeur depuis n'importe où :??:
 
Crées une petite classe pour la gestion du sgbd, utilises une variable statique et fais une fonction qui renvoit la valeur :)
 
Ou simplement une fonction sans classe qui compte, mais le global bof.

n°1489998
welcominh
Posté le 12-12-2006 à 10:13:10  profilanswer
 

J'utilise le global pour pouvoir utiliser la variable dans mon footer (afficher le nombre de requetes sql qu'a dû utiliser la page pour être générée).
Je pourrais le mettre en valeur de retour, mais il y a déjà le résultat de ma requete en retour. Si tu as une idée pour pouvoir utiliser ma variable de partout sans la mettre en valeur de retour, je suis preneur :)

 

PS: toujours bloqué pour ma fonction requete_sql()  :pfff:
edit: ah bah je viens de me rendre compte que ca marchait même pas avant sans la fonction. Bon bah je crois que je vais échapper le $nom_ost directement. Finalement, après avoir échappé le $nom_ost, ca marche


Message édité par welcominh le 12-12-2006 à 10:59:35

---------------
Direct-download.com, le moteur de recherche pour Mega
n°1491098
leflos5
On est ou on est pas :)
Posté le 14-12-2006 à 01:54:36  profilanswer
 

Tu utilises de belles fonctions propres comme j'ai proposé ;)
 
Petite piste, puisqu'en php tu peux pas faire de procédure, tu peux choisir la valeur de retour en fonction des paramètres en entrée ;)


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

  [PHP/MySQL] compter nombre requetes SQL ?

 

Sujets relatifs
[SQL] Petit coup de main dans une requête svp![résolu] film le plus loué SQL
[PHP/MySQL][résolu] Images dans un BLOB -> <img src="...">creer des tables et tester des requetes?
[Excel]Compter nombre de cellules sur colonneNombre de requete sql par page?
code source fonctions PHPRécupérer les namespaces avec PHP
Plus de sujets relatifs à : [PHP/MySQL] compter nombre requetes SQL ?


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