W3docs

get_connection_stats

Découvrez la fonction mysqli_get_connection_stats() en PHP pour obtenir les statistiques d'une connexion MySQL via le pilote mysqlnd.

La fonction mysqli_get_connection_stats() renvoie un instantané détaillé des statistiques de bas niveau d'une connexion MySQL — octets transférés, nombre de requêtes, tailles des tampons, et des dizaines d'autres compteurs collectés par le pilote mysqlnd sous-jacent. Cette page explique ce que la fonction retourne, dans quels cas elle est véritablement utile, et comment lire les valeurs les plus importantes.

Ce que fait mysqli_get_connection_stats()

mysqli_get_connection_stats() renvoie un array associatif de statistiques d'exécution pour une connexion MySQLi unique déjà ouverte. Les compteurs proviennent de mysqlnd (le pilote natif MySQL), qui est le pilote par défaut fourni avec PHP depuis PHP 5.4 ; la fonction est donc disponible sur toute installation PHP moderne à condition que mysqlnd soit utilisé.

Sa signature est :

mysqli_get_connection_stats(mysqli $mysql): array
  • Paramètre$mysql est un objet mysqli valide renvoyé par mysqli_connect() (style procédural) ou new mysqli(...) (style orienté objet).
  • Valeur de retour — un array de paires string => int|string. Il renvoie false uniquement si le pilote ne peut pas fournir de statistiques (pratiquement jamais dans une installation mysqlnd standard).

Une distinction importante : ces statistiques sont par connexion. Si vous souhaitez obtenir les totaux globaux à l'échelle du processus, pour toutes les connexions de la requête PHP en cours, utilisez plutôt mysqli_get_client_stats().

Comment l'utiliser

Ouvrez une connexion, puis passez-la à la fonction. Les deux styles, procédural et orienté objet, fonctionnent :

<?php
// Procedural style
$mysqli = mysqli_connect("localhost", "username", "password", "database");

if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

$stats = mysqli_get_connection_stats($mysqli);
print_r($stats);

mysqli_close($mysqli);
<?php
// Object-oriented style — identical result
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("Connection failed: " . $mysqli->connect_error);
}

$stats = $mysqli->get_connection_stats();
print_r($stats);

$mysqli->close();

print_r() affiche l'intégralité du tableau, qui contient plus de 160 entrées. Un exemple réduit ressemble à ceci :

Array
(
    [bytes_sent] => 43
    [bytes_received] => 80
    [packets_sent] => 1
    [packets_received] => 2
    [connect_success] => 1
    [com_query] => 0
    [rows_fetched_from_server_normal] => 0
    [result_set_queries] => 0
    ...
)

Lire les compteurs les plus utiles

Vous avez rarement besoin des 160 valeurs. Voici celles qui valent la peine d'être surveillées :

CompteurSignification
bytes_sent / bytes_receivedVolume total de données transitant sur le réseau, en octets. Utile pour détecter des ensembles de résultats trop volumineux.
packets_sent / packets_receivedNombre de paquets de protocole — un ratio élevé par rapport aux octets peut indiquer des allers-retours excessifs.
connect_success / connect_failureNombre de tentatives de connexion réussies ou échouées sur ce handle.
com_queryNombre d'instructions envoyées avec COM_QUERY (c'est-à-dire les requêtes non préparées).
rows_fetched_from_server_normalLignes envoyées par le serveur pour les résultats mis en tampon — un moyen rapide de détecter des lectures accidentelles de tables entières.
result_set_queriesRequêtes ayant produit un ensemble de résultats.

Comme la plupart de ces valeurs sont des entiers, vous pouvez en extraire une directement depuis le tableau :

<?php
$stats = mysqli_get_connection_stats($mysqli);
echo "Bytes received so far: " . $stats['bytes_received'] . PHP_EOL;

Quand l'utiliser

Recourez à mysqli_get_connection_stats() lorsque vous :

  • Profilez le transfert de données — vérifiez qu'une requête ne récupère pas beaucoup plus de lignes ou d'octets que prévu.
  • Déboguez le comportement d'une connexion — consultez connect_failure ou les compteurs liés à la reconnexion lorsqu'une connexion semble instable.
  • Construisez des diagnostics légers — enregistrez quelques compteurs après une requête pour surveiller la charge de la base de données au fil du temps.

Il s'agit d'un outil d'inspection en lecture seule : l'appeler ne modifie jamais la connexion ni les données. Pour la configuration et la fermeture d'une connexion, consultez mysqli_connect() et mysqli_close() ; pour les détails sur les erreurs, consultez mysqli_connect_error().

Conclusion

mysqli_get_connection_stats() expose les compteurs par connexion de mysqlnd sous forme d'un array simple, vous offrant une fenêtre pratique sur la quantité de données déplacées par une connexion et le nombre de requêtes exécutées. Combinée avec mysqli_get_client_stats() pour les totaux à l'échelle de la requête, c'est un moyen simple et sans coût de profiler et déboguer vos interactions MySQL.

Pratique

Pratique
Quelle est la fonction de getConnectionStats() en PHP ?
Quelle est la fonction de getConnectionStats() en PHP ?
Was this page helpful?