Créer un compteur de requêtes SQL

Les requêtes SQL nécessitant souvent plus de ressources, il est parfois nécessaire de connaitre le nombre de requêtes effectuées lors de l'affichage d'une page.
Nous allons voir ici une méthode pour y arriver.

Comme nous ne pouvons pas directement compter le nombre de requêtes, nous allons devoir le faire d'une façon détournée.

L'idée ici est d'appeller une fonction 'intermédiaire' afin de faire nos requêtes.

Au lieu d'appeller directement la fonction mysql_query() qui effectue la requête, nous devrons appeller une autre fonction qui fera à la fois la requête en question et incrémentera le compteur.

Mais alors, je devrais changer du code dans mes pages ?

Hélas oui, c'est le prix à payer mais cela devrait se faire facilement à l'aide de outils de 'remplacement' fourni avec les éditeurs de texte.

La fonction mysql_query()

Cette fonction fonctionne de la manière suivante:
Elle nécessite la requête SQL en paramètre et retourne la ressource contenant le résultat.

$sql = 'SELECT * FROM une_table';
$resultat = mysql_query($sql);

Nous ne tiendrons pas compte ici du second paramètre de la fonction mysql_query() qui permet d'identifier quelle connexion à la Base de données utiliser.

Le principe

Comme expliqué plus haut, nous n'appellerons plus directement la fonction mysql_query(), nous utiliserons une autre fonction que nous allons créer, je la nommerai db_query() (db pour DataBase).

Mais nous avons aussi besoin d'un compteur que l'on initialisera à zéro au debut de la page, pourquoi pas $query_count ?

Ainsi il ne restera plus qu'à incrémenter $query_count à chaque appel de db_query()

Notre fonction db_query()

Elle nécessite la requête en paramètre et retourne le résultat de cette requête.

function db_query($sql)
{
    return mysql_query($sql);
}

Nous devons aussi incrémenter le compteur, ça donnera donc :

function db_query($sql)
{
    global $query_count;
    $query_count++;
    return mysql_query($sql);
}

Utilisation

Il ne nous reste plus qu'à implémenter notre fonction sur nos pages.

// On initialise le compteur
$query_count = 0;


// On effectue diverses requêtes SQL
$sql = 'SELECT * FROM une_table';
$result = db_query($sql);

db_query("INSERT INTO une_table VALUES ('valeur')");


// On affiche le nombre de requêtes effectuées
echo $query_count;

Voilà, j'espère que ce petit article vous sera utile.

comments powered by Disqus