W3docs

get_connection_stats

Guida alla funzione mysqli_get_connection_stats() in PHP per ottenere statistiche dettagliate su una connessione MySQL tramite il driver mysqlnd.

La funzione mysqli_get_connection_stats() restituisce un'istantanea dettagliata di statistiche di basso livello su una connessione MySQL — byte trasferiti, conteggi delle query, dimensioni dei buffer e decine di altri contatori raccolti dal driver sottostante mysqlnd. Questa pagina spiega cosa restituisce la funzione, quando è davvero utile e come leggere i valori più importanti.

Cosa fa mysqli_get_connection_stats()

mysqli_get_connection_stats() restituisce un array associativo di statistiche di runtime per una singola connessione MySQLi già aperta. I contatori provengono da mysqlnd (il MySQL Native Driver), che è il driver predefinito incluso con PHP dalla versione 5.4, quindi la funzione è disponibile in ogni installazione PHP moderna purché sia in uso mysqlnd.

La sua firma è:

mysqli_get_connection_stats(mysqli $mysql): array
  • Parametro$mysql è un oggetto mysqli valido restituito da mysqli_connect() (stile procedurale) o new mysqli(...) (stile orientato agli oggetti).
  • Valore di ritorno — un array di coppie string => int|string. Restituisce false solo se il driver non riesce a fornire statistiche (praticamente mai in una build mysqlnd normale).

Una distinzione fondamentale: queste sono statistiche per connessione. Se desideri totali a livello di processo attraverso ogni connessione nella richiesta PHP corrente, usa invece mysqli_get_client_stats().

Come utilizzarla

Apri una connessione, poi passala alla funzione. Funzionano entrambi gli stili, procedurale e orientato agli oggetti:

<?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() esegue il dump dell'intero array, che ha più di 160 voci. Un esempio ridotto appare così:

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

Lettura dei contatori più utili

Raramente hai bisogno di tutti i 160 valori. Questi sono quelli che vale la pena monitorare:

ContatoreSignificato
bytes_sent / bytes_receivedPayload totale trasmesso sulla rete, in byte. Utile per individuare result set troppo grandi.
packets_sent / packets_receivedConteggi dei pacchetti di protocollo — un rapporto elevato rispetto ai byte può indicare round-trip eccessivi.
connect_success / connect_failureQuanti tentativi di connessione sono riusciti o falliti su questo handle.
com_queryNumero di istruzioni inviate con COM_QUERY (cioè query non preparate).
rows_fetched_from_server_normalRighe inviate dal server per risultati bufferizzati — un modo rapido per individuare letture accidentali di tabelle intere.
result_set_queriesQuery che hanno prodotto un result set.

Poiché la maggior parte di questi valori sono interi, puoi estrarne uno singolo direttamente dall'array:

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

Quando utilizzarla

Ricorri a mysqli_get_connection_stats() quando hai bisogno di:

  • Profilare il trasferimento di dati — verificare che una query non stia recuperando molte più righe o byte del previsto.
  • Debug del comportamento della connessione — controllare connect_failure o i contatori legati alla riconnessione quando una connessione sembra instabile.
  • Costruire diagnostiche leggere — registrare alcuni contatori dopo una richiesta per monitorare il carico del database nel tempo.

È uno strumento di ispezione in sola lettura: chiamarla non modifica mai la connessione né i dati. Per la configurazione e la chiusura generale della connessione, vedi mysqli_connect() e mysqli_close(); per i dettagli sugli errori, vedi mysqli_connect_error().

Conclusione

mysqli_get_connection_stats() espone i contatori per connessione di mysqlnd come un semplice array, offrendoti una finestra facile su quanti dati una connessione ha trasferito e quante query ha eseguito. Combinata con mysqli_get_client_stats() per i totali a livello di richiesta, è un modo pratico e a costo zero per profilare e fare debug delle tue interazioni con MySQL.

Pratica

Pratica
Qual è la funzione di getConnectionStats() in PHP?
Qual è la funzione di getConnectionStats() in PHP?
Was this page helpful?