get_connection_stats
Aprenda sobre a função mysqli_get_connection_stats() no PHP, usada para retornar estatísticas de uma conexão MySQL com o driver mysqlnd.
A função mysqli_get_connection_stats() retorna um instantâneo detalhado de estatísticas de baixo nível sobre uma conexão MySQL — bytes transferidos, contagens de consultas, tamanhos de buffer e dezenas de outros contadores coletados pelo driver mysqlnd subjacente. Esta página explica o que a função retorna, quando ela é genuinamente útil e como interpretar os valores mais importantes.
O que mysqli_get_connection_stats() faz
mysqli_get_connection_stats() retorna um array associativo de estatísticas de tempo de execução para uma única conexão MySQLi já aberta. Os contadores vêm do mysqlnd (MySQL Native Driver), que é o driver padrão incluído no PHP desde a versão 5.4, portanto a função está disponível em toda instalação moderna do PHP, desde que o mysqlnd esteja em uso.
Sua assinatura é:
mysqli_get_connection_stats(mysqli $mysql): array- Parâmetro —
$mysqlé um objetomysqliválido retornado pormysqli_connect()(procedural) ounew mysqli(...)(orientado a objetos). - Valor de retorno — um array de pares
string => int|string. Retornafalsesomente se o driver não conseguir fornecer estatísticas (efetivamente nunca em uma build normal do mysqlnd).
Uma distinção importante: estas são estatísticas por conexão. Se você quiser totais em todo o processo para cada conexão na requisição PHP atual, use mysqli_get_client_stats().
Como usar
Abra uma conexão e, em seguida, passe-a para a função. Ambos os estilos procedural e orientado a objetos funcionam:
<?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() exibe o array completo, que tem mais de 160 entradas. Uma amostra resumida parece assim:
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
...
)Lendo os contadores mais úteis
Raramente você precisará de todos os 160 valores. Estes são os que vale a pena monitorar:
| Contador | Significado |
|---|---|
bytes_sent / bytes_received | Total de payload movido pela rede, em bytes. Útil para identificar conjuntos de resultados muito grandes. |
packets_sent / packets_received | Contagem de pacotes do protocolo — uma alta proporção em relação aos bytes pode indicar round-trips excessivos. |
connect_success / connect_failure | Quantas tentativas de conexão tiveram sucesso ou falharam neste handle. |
com_query | Número de instruções enviadas com COM_QUERY (ou seja, consultas não preparadas). |
rows_fetched_from_server_normal | Linhas que o servidor enviou para resultados em buffer — uma maneira rápida de detectar leituras acidentais de tabelas inteiras. |
result_set_queries | Consultas que produziram um conjunto de resultados. |
Como a maioria desses valores são inteiros, você pode extrair um único diretamente do array:
<?php
$stats = mysqli_get_connection_stats($mysqli);
echo "Bytes received so far: " . $stats['bytes_received'] . PHP_EOL;Quando usar
Recorra a mysqli_get_connection_stats() quando você estiver:
- Perfilando transferência de dados — confirmando que uma consulta não está buscando muito mais linhas ou bytes do que o esperado.
- Depurando comportamento de conexão — verificando
connect_failureou contadores relacionados à reconexão quando uma conexão parece instável. - Construindo diagnósticos leves — registrando alguns contadores após uma requisição para monitorar a carga do banco de dados ao longo do tempo.
É uma ferramenta de inspeção somente leitura: chamá-la nunca altera a conexão ou os dados. Para configuração e encerramento geral de conexões, consulte mysqli_connect() e mysqli_close(); para detalhes de erros, consulte mysqli_connect_error().
Conclusão
mysqli_get_connection_stats() expõe os contadores por conexão do mysqlnd como um array simples, oferecendo uma janela fácil para quanto dados uma conexão moveu e quantas consultas ela executou. Combinada com mysqli_get_client_stats() para totais de toda a requisição, é uma maneira prática e de custo zero para perfilar e depurar suas interações com o MySQL.