W3docs

get_host_info

Scopri la funzione mysqli_get_host_info() in PHP, usata per restituire le informazioni sull'host di una connessione MySQL.

La funzione mysqli_get_host_info() restituisce una singola string che descrive come il tuo script PHP è connesso al server MySQL — il nome dell'host insieme al trasporto (TCP/IP, un socket Unix o una named pipe). Questa pagina spiega la sintassi, i valori che puoi aspettarti, sia lo stile procedurale che quello orientato agli oggetti, e i casi pratici in cui vale la pena utilizzare questa funzione.

Cosa restituisce get_host_info()

mysqli_get_host_info() è una funzione PHP integrata che, data una connessione MySQLi aperta, restituisce una string leggibile che descrive il tipo di connessione e l'host. I valori restituiti tipici sono:

  • localhost via TCP/IP — connesso al server locale tramite un socket di rete.
  • Localhost via UNIX socket — connesso tramite un socket di dominio Unix locale (predefinito su Linux/macOS quando l'host è localhost).
  • 127.0.0.1 via TCP/IP — connesso a un IP esplicito tramite TCP/IP.
  • db.example.com via TCP/IP — connesso a un host remoto.

È di sola lettura e non modifica mai la connessione; si limita a riportare il trasporto negoziato dal driver. Ciò lo rende utile per il debug (per confermare di aver raggiunto effettivamente il socket/host previsto) e per il logging dei diagnostici di connessione.

Sintassi

mysqli_get_host_info(mysqli $mysqli): string
ParametroDescrizione
$mysqliUn object di connessione valido restituito da mysqli_connect() o mysqli_real_connect().

Valore restituito: una string che descrive il tipo di connessione al server. Non restituisce mai false; se il link non è valido PHP genera un avviso.

Stile procedurale

Passa l'object di connessione restituito da mysqli_connect():

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

Prima chiamiamo mysqli_connect() per aprire la connessione, poi verifichiamo il risultato in modo da poter fallire correttamente con mysqli_connect_error() invece di generare avvisi. Passare il link a mysqli_get_host_info() restituisce la descrizione del trasporto, che stampiamo. Su un host Linux che utilizza localhost, l'output è simile a:

Host information: Localhost via UNIX socket

Stile orientato agli oggetti

La funzione procedurale ha una proprietà equivalente sull'object mysqli, 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();
?>

Entrambi gli stili restituiscono la stessa string. Si noti che nella forma orientata agli oggetti get_host_info è accessibile come proprietà, non come metodo.

Quando usarla?

  • Verifica del trasporto. Forzare TCP/IP (ad esempio usando 127.0.0.1 invece di localhost) è talvolta necessario per gli strumenti o per TLS. get_host_info() conferma quale hai effettivamente ottenuto.
  • Logging delle connessioni. Registrare la string dell'host insieme alle statistiche di connessione ti fornisce un rapido registro visivo di dove si è connessa una richiesta.
  • Risoluzione dei problemi "funziona in locale ma non in produzione". Un inaspettato via UNIX socket rispetto a via TCP/IP spiega spesso differenze di permessi o di firewall.

Errori comuni

  • Non confonderla con il superglobal $_SERVER. $_SERVER['SERVER_NAME'] descrive il server web che gestisce la richiesta HTTP; mysqli_get_host_info() descrive la connessione al database — due cose non correlate.
  • La string è destinata agli esseri umani, non al parsing. Se hai bisogno di valori strutturati, ispeziona l'host che hai passato a mysqli_connect() piuttosto che dividere questa string.
  • Per la versione della libreria client MySQL (anziché l'host di connessione), usa mysqli_get_client_info(); per il lato server, usa mysqli_get_server_info().

Conclusione

mysqli_get_host_info() è una funzione diagnostica piccola ma pratica: riporta come il tuo script ha raggiunto il server MySQL. Usala quando hai bisogno di confermare o registrare il trasporto di connessione, e ricorri a mysqli_get_proto_info() o mysqli_get_connection_stats() quando hai bisogno di maggiori dettagli.

Pratica

Pratica
Cosa restituisce mysqli_get_host_info()?
Cosa restituisce mysqli_get_host_info()?
Was this page helpful?