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 —
$mysqlest un objetmysqlivalide renvoyé parmysqli_connect()(style procédural) ounew mysqli(...)(style orienté objet). - Valeur de retour — un array de paires
string => int|string. Il renvoiefalseuniquement 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 :
| Compteur | Signification |
|---|---|
bytes_sent / bytes_received | Volume 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_received | Nombre de paquets de protocole — un ratio élevé par rapport aux octets peut indiquer des allers-retours excessifs. |
connect_success / connect_failure | Nombre de tentatives de connexion réussies ou échouées sur ce handle. |
com_query | Nombre d'instructions envoyées avec COM_QUERY (c'est-à-dire les requêtes non préparées). |
rows_fetched_from_server_normal | Lignes 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_queries | Requê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_failureou 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.