W3docs

Guida Completa alla Funzione mysqli_stat in PHP

Scopri come usare mysqli_stat in PHP per ottenere lo stato del server MySQL, analizzare l'output e gestire gli errori di connessione.

Quando si lavora con i database MySQL in PHP, l'estensione mysqli espone molte funzioni per comunicare con il server. mysqli_stat è quella più semplice per i controlli di salute: interroga il server MySQL per ottenere una singola riga di stato in tempo reale — tempo di attività, numero di query eseguite, thread aperti e così via.

Questa guida spiega cosa restituisce mysqli_stat, come chiamarla sia nello stile procedurale che in quello orientato agli oggetti, come trasformare il suo output grezzo in numeri utilizzabili e i problemi comuni a cui prestare attenzione.

mysqli_stat non è la funzione di filesystem stat(). Se stai cercando metadati di file (dimensione, permessi, inode), consulta stat in PHP e fstat.

Cosa fa mysqli_stat

mysqli_stat è una funzione integrata che restituisce lo stato attuale del server MySQL come una stringa separata da spazi. È l'equivalente PHP dell'esecuzione di mysqladmin status dalla riga di comando — un'istantanea rapida, non un dump completo delle prestazioni.

Un valore di ritorno tipico appare così:

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

I campi significano:

CampoSignificato
UptimeSecondi in cui il server è stato in esecuzione
ThreadsConnessioni client attualmente aperte
QuestionsIstruzioni eseguite dall'avvio
Slow queriesQuery che hanno superato long_query_time
OpensTabelle aperte dal server
Open tablesTabelle attualmente aperte
Queries per second avgThroughput medio delle query

Sintassi

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

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

Accetta il collegamento restituito da mysqli_connect (procedurale) o un oggetto mysqli (OOP), e restituisce la stringa di stato in caso di successo oppure false in caso di errore (ad esempio quando la connessione è stata persa).

Utilizzo di base

Stile procedurale

Prima connettiti, poi leggi lo stato. Tratta sempre un ritorno false come un errore.

<?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;
}

Stile orientato agli oggetti

La stessa chiamata come metodo sull'oggetto mysqli:

<?php

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

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

echo $mysqli->stat();

Analisi dello stato in numeri

La stringa grezza va bene per il logging, ma per il monitoraggio di solito si vogliono i valori singoli. Ogni campo è Nome: valore, separato da due spazi, quindi puoi suddividerlo in una mappa chiave/valore:

<?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;

Output:

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

Ora $stats['Uptime'] e $stats['Slow queries'] sono facili da sogliare, usare per avvisi o grafici.

Casi d'uso comuni

  • Controllo di attività. Chiama mysqli_stat in un endpoint di health check; se restituisce false, il database non è raggiungibile.
  • Monitoraggio leggero. Campiona Threads e Queries per second avg periodicamente per individuare picchi di carico.
  • Individuare query lente. Un conteggio crescente di Slow queries è un segnale precoce che manca un indice.

Problemi comuni

  • Restituisce una stringa, non un array. var_dump sul risultato mostra una singola stringa. Analizzala manualmente (vedi sopra) prima di fare calcoli sui valori.
  • Controlla false, non la stringa vuota. Su una connessione interrotta la funzione restituisce il boolean false. Usa un confronto rigoroso (=== false) per non confonderlo con una stringa vuota.
  • È un'istantanea, non uno storico. Valori come Questions sono cumulativi dall'avvio del server; per misurare la velocità devi campionare due volte e sottrarre.
  • Richiede una connessione valida. Se la connessione non è riuscita, chiamare mysqli_stat su di essa produrrà avvisi o errori. Verifica sempre la connessione prima — vedi mysqli_connect_error.

Funzioni correlate

Conclusione

mysqli_stat è uno strumento piccolo ma pratico per monitorare un server MySQL da PHP. Restituisce una singola stringa di stato con metriche di uptime, thread e query. Confronta il risultato con false per rilevare una connessione interrotta, e analizza la stringa in una mappa chiave/valore quando hai bisogno dei singoli numeri per health check o dashboard.

Pratica

Pratica
Cosa restituisce mysqli_stat() in PHP?
Cosa restituisce mysqli_stat() in PHP?
Was this page helpful?