W3docs

get_connection_stats

Erläuterung der Funktion mysqli_get_connection_stats() in PHP, die Statistiken einer MySQL-Verbindung zurückgibt.

Die Funktion mysqli_get_connection_stats() gibt eine detaillierte Momentaufnahme der Low-Level-Statistiken einer MySQL-Verbindung zurück — übertragene Bytes, Abfrageanzahl, Puffergrößen und Dutzende weiterer Zähler, die vom zugrunde liegenden mysqlnd-Treiber erfasst werden. Diese Seite erklärt, was die Funktion zurückgibt, wann sie sinnvoll eingesetzt wird und wie die wichtigsten Werte zu lesen sind.

Was mysqli_get_connection_stats() macht

mysqli_get_connection_stats() gibt ein assoziatives array mit Laufzeitstatistiken für eine einzelne, bereits geöffnete MySQLi-Verbindung zurück. Die Zähler stammen von mysqlnd (dem MySQL Native Driver), dem Standard-Treiber, der seit PHP 5.4 mit PHP ausgeliefert wird. Die Funktion ist daher auf jeder modernen PHP-Installation verfügbar, solange mysqlnd verwendet wird.

Die Signatur lautet:

mysqli_get_connection_stats(mysqli $mysql): array
  • Parameter$mysql ist ein gültiges mysqli-Objekt, das von mysqli_connect() (prozedural) oder new mysqli(...) (objektorientiert) zurückgegeben wird.
  • Rückgabewert — ein array mit string => int|string-Paaren. Es gibt nur dann false zurück, wenn der Treiber keine Statistiken liefern kann (was bei einem normalen mysqlnd-Build praktisch nie vorkommt).

Ein wichtiger Unterschied: Diese Werte sind verbindungsbezogene Statistiken. Wenn Sie prozessweite Gesamtwerte über alle Verbindungen des aktuellen PHP-Requests benötigen, verwenden Sie stattdessen mysqli_get_client_stats().

Verwendung

Öffnen Sie eine Verbindung und übergeben Sie sie dann an die Funktion. Sowohl der prozedurale als auch der objektorientierte Stil funktionieren:

<?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() gibt das vollständige array aus, das mehr als 160 Einträge enthält. Ein gekürztes Beispiel sieht so aus:

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

Die wichtigsten Zähler verstehen

Selten werden alle 160 Werte benötigt. Die folgenden sind besonders aufschlussreich:

ZählerBedeutung
bytes_sent / bytes_receivedGesamtnutzlast, die über das Netzwerk übertragen wurde, in Bytes. Nützlich, um überdimensionierte Ergebnismengen zu erkennen.
packets_sent / packets_receivedAnzahl der Protokollpakete — ein hohes Verhältnis zu den Bytes kann auf häufige Round-Trips hinweisen.
connect_success / connect_failureAnzahl erfolgreicher oder fehlgeschlagener Verbindungsversuche für dieses Handle.
com_queryAnzahl der mit COM_QUERY gesendeten Anweisungen (d. h. nicht vorbereitete Abfragen).
rows_fetched_from_server_normalVom Server für gepufferte Ergebnisse gesendete Zeilen — eine schnelle Methode, um versehentliche Volltabellenlesevorgänge zu erkennen.
result_set_queriesAbfragen, die eine Ergebnismenge produziert haben.

Da die meisten dieser Werte Ganzzahlen sind, können Sie einen einzelnen Wert direkt aus dem array auslesen:

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

Wann verwenden?

mysqli_get_connection_stats() ist sinnvoll, wenn Sie:

  • Datenübertragung profilieren — prüfen, ob eine Abfrage deutlich mehr Zeilen oder Bytes als erwartet abruft.
  • Verbindungsverhalten debuggenconnect_failure oder verbindungsbezogene Zähler prüfen, wenn eine Verbindung instabil erscheint.
  • Einfache Diagnosen erstellen — nach einem Request einige Zähler protokollieren, um die Datenbankauslastung im Laufe der Zeit zu verfolgen.

Es handelt sich um ein reines Inspektionswerkzeug: Der Aufruf ändert weder die Verbindung noch die Daten. Zur allgemeinen Verbindungseinrichtung und -beendigung siehe mysqli_connect() und mysqli_close(); für Fehlerdetails siehe mysqli_connect_error().

Fazit

mysqli_get_connection_stats() stellt die verbindungsbezogenen Zähler von mysqlnd als einfaches array bereit und bietet damit einen unkomplizierten Einblick in die übertragene Datenmenge und die Anzahl der ausgeführten Abfragen einer Verbindung. In Kombination mit mysqli_get_client_stats() für requestweite Gesamtwerte ist es eine praktische, kostenfreie Möglichkeit, MySQL-Interaktionen zu profilieren und zu debuggen.

Übungen

Übung
Was ist die Funktion von getConnectionStats() in PHP?
Was ist die Funktion von getConnectionStats() in PHP?
Was this page helpful?