Start · Sprachen · PHP · Referenz · mysqli_get_links_stats

mysqli_get_links_stats

Funktion

Gibt statistische Informationen über offene und gecachte MySQLi-Verbindungen als assoziatives Array zurück.

seit PHP 5.6.0 Kategorie: db

Signatur

mysqli_get_links_stats(): array

Beschreibung

mysqli_get_links_stats() liefert eine Übersicht über den aktuellen Zustand aller MySQLi-Verbindungen im laufenden PHP-Prozess. Die Funktion ist besonders nützlich beim Debuggen von Verbindungsproblemen oder beim Monitoring von Datenbankverbindungen in langlebigen Prozessen (z. B. PHP-FPM, CLI-Daemons).

Das zurückgegebene Array enthält drei Schlüssel: total (Gesamtanzahl aller Verbindungen), active_plinks (Anzahl aktiver persistenter Verbindungen) und cached_plinks (Anzahl gecachter persistenter Verbindungen). Diese Werte helfen dabei, Verbindungslecks oder eine unerwartete Häufung persistenter Verbindungen zu erkennen.

Die Funktion hat keine Parameter und arbeitet prozessglobal – sie bezieht sich auf alle im aktuellen PHP-Prozess verwalteten MySQLi-Verbindungen, nicht nur auf eine einzelne Ressource. Sie ist ausschließlich als prozedurale Funktion verfügbar und hat kein objektorientiertes Pendant.

Rückgabewert

Typ
array
Beschreibung
Gibt ein assoziatives Array mit den Schlüsseln total (Gesamtanzahl aller Verbindungen), active_plinks (aktive persistente Verbindungen) und cached_plinks (gecachte persistente Verbindungen) zurück. Alle Werte sind vom Typ int.

Beispiele

Verbindungsstatistiken ausgeben

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

$stats = mysqli_get_links_stats();

echo 'Verbindungen gesamt:      ' . $stats['total'] . PHP_EOL;
echo 'Aktive plinks:            ' . $stats['active_plinks'] . PHP_EOL;
echo 'Gecachte plinks:          ' . $stats['cached_plinks'] . PHP_EOL;

mysqli_close($db);
Verbindungen gesamt: 1 Aktive plinks: 0 Gecachte plinks: 0

Überwachung bei persistenten Verbindungen

<?php
// Persistente Verbindung über p:-Präfix
$db1 = mysqli_connect('p:localhost', 'root', 'geheim', 'testdb');
$db2 = mysqli_connect('p:localhost', 'root', 'geheim', 'testdb2');

$stats = mysqli_get_links_stats();

if ($stats['active_plinks'] > 10) {
    error_log('Warnung: Zu viele aktive persistente MySQLi-Verbindungen: ' . $stats['active_plinks']);
}

var_dump($stats);

mysqli_close($db1);
mysqli_close($db2);
array(3) { ["total"]=> int(2) ["active_plinks"]=> int(2) ["cached_plinks"]=> int(0) }

// Wichtig · Fallstricke

Verfügbarkeit: mysqli_get_links_stats() steht nur zur Verfügung, wenn PHP mit der MySQLi-Erweiterung kompiliert wurde und ist nicht auf allen Systemen dokumentiert – die Funktion gilt als experimentell und war nicht in allen PHP-5.6-Minor-Releases durchgängig vorhanden.

Persistente Verbindungen: Der Unterschied zwischen active_plinks und cached_plinks ist wichtig: Gecachte persistente Verbindungen sind zwar offen, werden aber gerade nicht aktiv von einer Skriptinstanz genutzt. Eine hohe Zahl gecachter Verbindungen kann auf Verbindungslecks hinweisen.

Kein OOP-Äquivalent: Es gibt keine Methode $mysqli->get_links_stats(); die Funktion ist ausschließlich prozedural verwendbar.