get_host_info
Erläuterung der mysqli_get_host_info()-Funktion in PHP: Syntax, Rückgabewerte, prozeduraler und objektorientierter Stil mit Beispielen.
Die Funktion mysqli_get_host_info() gibt einen einzelnen string zurück, der beschreibt, wie Ihr PHP-Skript mit dem MySQL-Server verbunden ist — den Hostnamen zusammen mit dem Transport (TCP/IP, einem Unix-Socket oder einer Named Pipe). Diese Seite erläutert die Syntax, die möglichen Rückgabewerte, den prozeduralen und den objektorientierten Stil sowie die praktischen Szenarien, in denen die Funktion nützlich ist.
Was get_host_info() zurückgibt
mysqli_get_host_info() ist eine eingebaute PHP-Funktion, die bei einer offenen MySQLi-Verbindung einen lesbaren string zurückgibt, der den Verbindungstyp und den Host beschreibt. Typische Rückgabewerte sind:
localhost via TCP/IP— verbunden mit dem lokalen Server über einen Netzwerk-Socket.Localhost via UNIX socket— verbunden über einen lokalen Unix-Domain-Socket (Standard unter Linux/macOS, wenn der Hostlocalhostist).127.0.0.1 via TCP/IP— verbunden mit einer expliziten IP über TCP/IP.db.example.com via TCP/IP— verbunden mit einem Remote-Host.
Die Funktion ist schreibgeschützt und ändert die Verbindung nie; sie gibt lediglich den Transport aus, den der Treiber ausgehandelt hat. Das macht sie praktisch für Debugging (um zu bestätigen, dass Sie wirklich den erwarteten Socket/Host erreicht haben) und für die Protokollierung von Verbindungsdiagnosen.
Syntax
mysqli_get_host_info(mysqli $mysqli): string| Parameter | Beschreibung |
|---|---|
$mysqli | Ein gültiges Verbindungsobjekt, das von mysqli_connect() oder mysqli_real_connect() zurückgegeben wird. |
Rückgabewert: ein string, der den Verbindungstyp zum Server beschreibt. Er gibt nie false zurück; wenn der Link ungültig ist, löst PHP stattdessen eine Warnung aus.
Prozeduraler Stil
Übergeben Sie das von mysqli_connect() zurückgegebene Verbindungsobjekt:
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Host information: " . mysqli_get_host_info($mysqli);
mysqli_close($mysqli);
?>Wir rufen zunächst mysqli_connect() auf, um die Verbindung zu öffnen, und prüfen dann das Ergebnis, damit wir mit mysqli_connect_error() sauber fehlschlagen können, anstatt Warnungen auszulösen. Das Übergeben des Links an mysqli_get_host_info() gibt die Transportbeschreibung zurück, die wir ausgeben. Auf einem Linux-Host mit localhost sieht die Ausgabe so aus:
Host information: Localhost via UNIX socketObjektorientierter Stil
Die prozedurale Funktion hat eine entsprechende Eigenschaft am mysqli-object, get_host_info:
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
die("Connection failed: " . $mysqli->connect_error);
}
echo "Host information: " . $mysqli->get_host_info;
$mysqli->close();
?>Beide Stile geben denselben string zurück. Beachten Sie, dass get_host_info im objektorientierten Stil als Eigenschaft zugegriffen wird, nicht als Methode aufgerufen wird.
Wann würde ich es verwenden?
- Transport verifizieren. Das Erzwingen von TCP/IP (z. B. durch Verwendung von
127.0.0.1stattlocalhost) ist manchmal für Tools oder TLS erforderlich.get_host_info()bestätigt, welchen Sie tatsächlich erhalten haben. - Verbindungsprotokollierung. Das Aufzeichnen des Host-Strings zusammen mit Verbindungsstatistiken liefert Ihnen einen schnellen Überblick darüber, wohin eine Anfrage verbunden wurde.
- Fehlersuche bei „funktioniert lokal, aber nicht in der Produktion." Ein überraschendes
via UNIX socketvs.via TCP/IPerklärt oft Unterschiede bei Berechtigungen oder Firewalls.
Häufige Fallstricke
- Verwechseln Sie sie nicht mit dem
$_SERVER-Superglobal.$_SERVER['SERVER_NAME']beschreibt den Web-Server, der die HTTP-Anfrage verarbeitet;mysqli_get_host_info()beschreibt die Datenbank-Verbindung — zwei unabhängige Dinge. - Der string ist für Menschen gedacht, nicht zum Parsen. Wenn Sie strukturierte Werte benötigen, überprüfen Sie den Host, den Sie an
mysqli_connect()übergeben haben, anstatt diesen string aufzuteilen. - Für die MySQL-Client-Bibliothek-Version (statt des Verbindungshosts) verwenden Sie
mysqli_get_client_info(); für die Serverseite verwenden Siemysqli_get_server_info().
Fazit
mysqli_get_host_info() ist eine kleine, aber praktische Diagnosefunktion: Sie gibt an, wie Ihr Skript den MySQL-Server erreicht hat. Verwenden Sie sie, wenn Sie den Verbindungstransport bestätigen oder protokollieren müssen, und greifen Sie auf mysqli_get_proto_info() oder mysqli_get_connection_stats() zurück, wenn Sie mehr Details benötigen.