W3docs

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 objeto mysqli válido retornado por mysqli_connect() (procedural) ou new mysqli(...) (orientado a objetos).
  • Valor de retorno — um array de pares string => int|string. Retorna false somente 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:

ContadorSignificado
bytes_sent / bytes_receivedTotal de payload movido pela rede, em bytes. Útil para identificar conjuntos de resultados muito grandes.
packets_sent / packets_receivedContagem de pacotes do protocolo — uma alta proporção em relação aos bytes pode indicar round-trips excessivos.
connect_success / connect_failureQuantas tentativas de conexão tiveram sucesso ou falharam neste handle.
com_queryNúmero de instruções enviadas com COM_QUERY (ou seja, consultas não preparadas).
rows_fetched_from_server_normalLinhas que o servidor enviou para resultados em buffer — uma maneira rápida de detectar leituras acidentais de tabelas inteiras.
result_set_queriesConsultas 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_failure ou 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.

Prática

Prática
Qual é a função de getConnectionStats() no PHP?
Qual é a função de getConnectionStats() no PHP?
Was this page helpful?