Start · Sprachen · PHP · Referenz · mysqli_stat

mysqli_stat

Funktion

Gibt den aktuellen Systemstatus des MySQL-Servers als String zurück, ähnlich dem Befehl <code>SHOW STATUS</code>.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_stat(mysqli $mysql): string|false

Beschreibung

mysqli_stat() fragt den aktuellen Betriebsstatus des MySQL-Servers ab und liefert eine kompakte, einzeilige Statusmeldung. Diese enthält typischerweise Informationen wie Betriebsdauer (Uptime), Anzahl laufender Threads, Abfragen pro Sekunde, geladene Tabellen und mehr.

Die Funktion ist nützlich für Monitoring-Zwecke, schnelle Diagnosen oder zur Anzeige von Serverinformationen im Admin-Bereich einer Anwendung. Sie entspricht dem MySQL-Kommandozeilen-Befehl mysqladmin status.

Die Funktion ist sowohl im prozeduralen Stil (mysqli_stat($connection)) als auch im objektorientierten Stil ($mysqli->stat()) nutzbar. Bei einem Fehler wird false zurückgegeben.

Parameter

Name Typ Default Beschreibung
$mysql Pflicht mysqli Ein aktives mysqli-Verbindungsobjekt, das zuvor mit mysqli_connect() oder new mysqli() erstellt wurde.

Rückgabewert

Typ
string|false
Beschreibung
Gibt einen String mit dem aktuellen Systemstatus des MySQL-Servers zurück. Bei einem Fehler wird false zurückgegeben.

Beispiele

Systemstatus prozedural abrufen

<?php
$mysqli = mysqli_connect('localhost', 'root', 'geheim', 'testdb');

if (!$mysqli) {
    die('Verbindungsfehler: ' . mysqli_connect_error());
}

$status = mysqli_stat($mysqli);

if ($status !== false) {
    echo 'Server-Status: ' . $status . PHP_EOL;
} else {
    echo 'Statusabfrage fehlgeschlagen.' . PHP_EOL;
}

mysqli_close($mysqli);
Server-Status: Uptime: 12345 Threads: 3 Questions: 9876 Slow queries: 0 Opens: 42 Flush tables: 1 Open tables: 30 Queries per second avg: 0.800

Systemstatus objektorientiert abrufen und parsen

<?php
$mysqli = new mysqli('localhost', 'root', 'geheim', 'testdb');

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

$status = $mysqli->stat();

if ($status !== false) {
    // Status-String in Key-Value-Paare aufteilen
    $parts = explode('  ', $status);
    foreach ($parts as $part) {
        [$key, $value] = array_pad(explode(': ', $part, 2), 2, null);
        if ($key && $value !== null) {
            echo htmlspecialchars(trim($key)) . ' => ' . htmlspecialchars(trim($value)) . PHP_EOL;
        }
    }
} else {
    echo 'Fehler beim Abrufen des Status.' . PHP_EOL;
}

$mysqli->close();
Uptime => 12345 Threads => 3 Questions => 9876 Slow queries => 0 Opens => 42 Flush tables => 1 Open tables => 30 Queries per second avg => 0.800

// Wichtig · Fallstricke

Berechtigungen: Abhängig von der MySQL-Serverkonfiguration kann für den Abruf dieser Statusinformationen das Recht PROCESS oder SUPER erforderlich sein. Bei fehlenden Rechten gibt die Funktion false zurück.

Ausgabeformat: Der zurückgegebene String ist für menschliche Lesbarkeit gedacht und kein strukturiertes Format. Für maschinell auswertbare Serverstatistiken empfiehlt sich stattdessen die SQL-Abfrage SHOW GLOBAL STATUS mit anschließendem Parsen der Ergebnismenge.

Nicht zu verwechseln mit mysqli_get_server_info(), das lediglich die Serverversion zurückgibt.