W3docs

get_connection_stats

Aprende a usar mysqli_get_connection_stats() en PHP para obtener estadísticas de una conexión MySQL: bytes transferidos, conteo de consultas y más.

La función mysqli_get_connection_stats() devuelve una instantánea detallada de estadísticas de bajo nivel sobre una conexión MySQL: bytes transferidos, conteo de consultas, tamaños de búfer y docenas de otros contadores recopilados por el controlador subyacente mysqlnd. Esta página explica qué devuelve la función, cuándo es realmente útil y cómo interpretar los valores más importantes.

Qué hace mysqli_get_connection_stats()

mysqli_get_connection_stats() devuelve un array asociativo de estadísticas de tiempo de ejecución para una única conexión MySQLi ya abierta. Los contadores provienen de mysqlnd (el MySQL Native Driver), que es el controlador predeterminado incluido con PHP desde PHP 5.4, por lo que la función está disponible en cualquier instalación moderna de PHP siempre que se use mysqlnd.

Su firma es:

mysqli_get_connection_stats(mysqli $mysql): array
  • Parámetro$mysql es un objeto mysqli válido devuelto por mysqli_connect() (estilo procedimental) o new mysqli(...) (estilo orientado a objetos).
  • Valor de retorno — un array de pares string => int|string. Devuelve false únicamente si el controlador no puede proporcionar estadísticas (prácticamente nunca ocurre en una compilación normal de mysqlnd).

Una distinción clave: estas son estadísticas por conexión. Si deseas totales a nivel de proceso para todas las conexiones en la solicitud PHP actual, usa mysqli_get_client_stats() en su lugar.

Cómo usarlo

Abre una conexión y luego pásala a la función. Tanto el estilo procedimental como el orientado a objetos funcionan:

<?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() vuelca el array completo, que tiene más de 160 entradas. Una muestra resumida tiene este aspecto:

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
    ...
)

Lectura de los contadores más útiles

Rara vez necesitarás los 160 valores. Estos son los que merece la pena vigilar:

ContadorSignificado
bytes_sent / bytes_receivedCarga total transferida por la red, en bytes. Útil para detectar conjuntos de resultados demasiado grandes.
packets_sent / packets_receivedConteo de paquetes de protocolo — una relación alta con respecto a los bytes puede indicar muchos viajes de ida y vuelta.
connect_success / connect_failureCuántos intentos de conexión tuvieron éxito o fallaron en este manejador.
com_queryNúmero de sentencias enviadas con COM_QUERY (es decir, consultas no preparadas).
rows_fetched_from_server_normalFilas que el servidor envió para resultados en búfer — una forma rápida de detectar lecturas accidentales de tablas completas.
result_set_queriesConsultas que produjeron un conjunto de resultados.

Como la mayoría de estos valores son enteros, puedes extraer uno solo del array directamente:

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

Cuándo usarlo

Recurre a mysqli_get_connection_stats() cuando estés:

  • Perfilando la transferencia de datos — confirmando que una consulta no está recuperando muchas más filas o bytes de los esperados.
  • Depurando el comportamiento de la conexión — comprobando connect_failure u otros contadores relacionados con la reconexión cuando una conexión parece inestable.
  • Construyendo diagnósticos ligeros — registrando algunos contadores tras una solicitud para rastrear la carga de la base de datos a lo largo del tiempo.

Es una herramienta de inspección de solo lectura: llamarla nunca modifica la conexión ni los datos. Para la configuración y el cierre de conexiones en general, consulta mysqli_connect() y mysqli_close(); para detalles de error, consulta mysqli_connect_error().

Conclusión

mysqli_get_connection_stats() expone los contadores por conexión de mysqlnd como un array simple, ofreciéndote una ventana fácil para ver cuántos datos ha movido una conexión y cuántas consultas ha ejecutado. Combinada con mysqli_get_client_stats() para totales a nivel de solicitud, es una forma práctica y sin coste de perfilar y depurar tus interacciones con MySQL.

Práctica

Práctica
¿Cuál es la función de getConnectionStats() en PHP?
¿Cuál es la función de getConnectionStats() en PHP?
Was this page helpful?