W3docs

Guía completa sobre la función mysqli_stat en PHP

Aprende a usar mysqli_stat en PHP para obtener el estado del servidor MySQL, analizar el resultado y monitorear conexiones y consultas.

Cuando trabajas con bases de datos MySQL en PHP, la extensión mysqli expone muchas funciones para comunicarse con el servidor. mysqli_stat es la más sencilla para comprobaciones de estado: le pregunta al servidor MySQL por una sola línea de estado en tiempo real — tiempo de actividad, cuántas consultas ha ejecutado, cuántos hilos están abiertos, etc.

Esta guía explica qué devuelve mysqli_stat, cómo llamarla tanto en estilo procedural como orientado a objetos, cómo convertir su salida sin procesar en números utilizables y los errores comunes que debes vigilar.

mysqli_stat no es la función stat() del sistema de archivos. Si buscas metadatos de archivos (tamaño, permisos, inodo), consulta stat en PHP y fstat en su lugar.

Qué hace mysqli_stat

mysqli_stat es una función integrada que devuelve el estado actual del servidor MySQL como una cadena separada por espacios. Es el equivalente en PHP de ejecutar mysqladmin status en la línea de comandos — una instantánea rápida, no un volcado completo de rendimiento.

Un valor de retorno típico tiene este aspecto:

Uptime: 272701  Threads: 1  Questions: 18  Slow queries: 0  Opens: 17  Flush tables: 1  Open tables: 5  Queries per second avg: 0.000

Los campos significan:

CampoSignificado
UptimeSegundos que lleva en ejecución el servidor
ThreadsConexiones de cliente actualmente abiertas
QuestionsSentencias ejecutadas desde el inicio
Slow queriesConsultas que superaron long_query_time
OpensTablas que el servidor ha abierto
Open tablesTablas actualmente abiertas
Queries per second avgRendimiento medio de consultas

Sintaxis

// Procedural style
mysqli_stat(mysqli $connection): string|false

// Object-oriented style
$connection->stat(): string|false

Recibe el enlace de conexión devuelto por mysqli_connect (procedural) o un objeto mysqli (OOP), y devuelve la cadena de estado en caso de éxito o false en caso de error (por ejemplo, cuando se ha perdido la conexión).

Uso básico

Estilo procedural

Primero conéctate y luego lee el estado. Trata siempre un retorno false como un error.

<?php

$connection = mysqli_connect('localhost', 'username', 'password', 'mydatabase');

if (!$connection) {
    die('Connection failed: ' . mysqli_connect_error());
}

$status = mysqli_stat($connection);

if ($status === false) {
    echo 'Error: ' . mysqli_error($connection);
} else {
    echo $status;
}

Estilo orientado a objetos

La misma llamada como método en el objeto mysqli:

<?php

$mysqli = new mysqli('localhost', 'username', 'password', 'mydatabase');

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

echo $mysqli->stat();

Análisis del estado en números

La cadena sin procesar está bien para el registro, pero para la monitorización normalmente quieres valores individuales. Cada campo es Name: value, separado por dos espacios, por lo que puedes dividirlo en un mapa clave/valor:

<?php

function parseMysqlStat(string $status): array
{
    $result = [];

    foreach (explode('  ', $status) as $pair) {
        // Each pair looks like "Uptime: 272701"
        [$key, $value] = array_map('trim', explode(':', $pair, 2));
        $result[$key] = $value;
    }

    return $result;
}

$status = 'Uptime: 272701  Threads: 1  Questions: 18  Slow queries: 0  Opens: 17  Flush tables: 1  Open tables: 5  Queries per second avg: 0.000';

$stats = parseMysqlStat($status);

echo 'Uptime in seconds: ' . $stats['Uptime'] . PHP_EOL;
echo 'Active threads: ' . $stats['Threads'] . PHP_EOL;
echo 'Slow queries: ' . $stats['Slow queries'] . PHP_EOL;

Salida:

Uptime in seconds: 272701
Active threads: 1
Slow queries: 0

Ahora $stats['Uptime'] y $stats['Slow queries'] son fáciles de comparar con umbrales, configurar alertas o representar en gráficas.

Casos de uso comunes

  • Comprobación de actividad. Llama a mysqli_stat en un endpoint de verificación de salud; si devuelve false, la base de datos es inaccesible.
  • Monitorización ligera. Muestrea Threads y Queries per second avg periódicamente para detectar picos de carga.
  • Detección de consultas lentas. Un incremento en el recuento de Slow queries es una señal temprana de que falta un índice.

Errores comunes

  • Devuelve una cadena, no un array. var_dump del resultado muestra una única cadena. Analízala tú mismo (ver arriba) antes de realizar operaciones matemáticas con los valores.
  • Comprueba false, no vacío. En una conexión perdida, la función devuelve el booleano false. Usa una comparación estricta (=== false) para no confundirla con una cadena vacía.
  • Es una instantánea, no un historial. Valores como Questions son acumulativos desde el inicio del servidor; para medir la tasa debes tomar dos muestras y restar.
  • Necesita una conexión válida. Si la conexión falló, llamar a mysqli_stat sobre ella generará advertencias o errores. Verifica siempre la conexión primero — consulta mysqli_connect_error.

Funciones relacionadas

Conclusión

mysqli_stat es una herramienta pequeña pero práctica para monitorizar un servidor MySQL desde PHP. Devuelve una única cadena de estado con métricas de tiempo de actividad, hilos y consultas. Compara el resultado contra false para detectar una conexión caída, y analiza la cadena en un mapa clave/valor cuando necesites los números individuales para comprobaciones de salud o paneles de control.

Práctica

Práctica
¿Qué devuelve mysqli_stat() en PHP?
¿Qué devuelve mysqli_stat() en PHP?
Was this page helpful?