get_host_info
Saiba como usar a função mysqli_get_host_info() no PHP para retornar informações sobre a conexão com o servidor MySQL, com exemplos práticos.
A função mysqli_get_host_info() retorna uma string única que descreve como seu script PHP está conectado ao servidor MySQL — o nome do host junto com o transporte (TCP/IP, um socket Unix ou um named pipe). Esta página explica a sintaxe, os valores que você pode esperar receber, os estilos procedural e orientado a objetos, e os casos práticos em que a função é útil.
O que get_host_info() retorna
mysqli_get_host_info() é uma função PHP embutida que, dado uma conexão MySQLi aberta, retorna uma string legível por humanos descrevendo o tipo de conexão e o host. Os valores de retorno típicos são:
localhost via TCP/IP— conectado ao servidor local por um socket de rede.Localhost via UNIX socket— conectado por meio de um socket de domínio Unix local (o padrão no Linux/macOS quando o host élocalhost).127.0.0.1 via TCP/IP— conectado a um IP explícito via TCP/IP.db.example.com via TCP/IP— conectado a um host remoto.
É somente leitura e nunca altera a conexão; simplesmente informa o transporte negociado pelo driver. Isso o torna útil para depuração (confirmando que você realmente acessou o socket/host esperado) e para registro de diagnósticos de conexão.
Sintaxe
mysqli_get_host_info(mysqli $mysqli): string| Parâmetro | Descrição |
|---|---|
$mysqli | Um object de conexão válido retornado por mysqli_connect() ou mysqli_real_connect(). |
Valor de retorno: uma string descrevendo o tipo de conexão com o servidor. Nunca retorna false; se o link for inválido, o PHP emite um aviso.
Estilo procedural
Passe o object de conexão retornado por 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);
?>Primeiro chamamos mysqli_connect() para abrir a conexão, depois verificamos o resultado para que possamos falhar de forma limpa com mysqli_connect_error() em vez de disparar avisos. Passar o link para mysqli_get_host_info() retorna a descrição do transporte, que imprimimos. Em um host Linux usando localhost, a saída se parece com:
Host information: Localhost via UNIX socketEstilo orientado a objetos
A função procedural tem uma propriedade equivalente no 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();
?>Ambos os estilos retornam a mesma string. Observe que na forma orientada a objetos get_host_info é acessado como uma propriedade, não chamado como um método.
Quando devo usar isso?
- Verificar o transporte. Forçar TCP/IP (por exemplo, usando
127.0.0.1em vez delocalhost) às vezes é necessário para ferramentas ou TLS.get_host_info()confirma qual você realmente obteve. - Registro de conexão. Registrar a string do host junto com as estatísticas de conexão fornece um registro rápido de onde uma requisição se conectou.
- Solucionar "funciona localmente mas não em produção". Um surpreendente
via UNIX socketvsvia TCP/IPfrequentemente explica diferenças de permissão ou firewall.
Armadilhas comuns
- Não confunda com a superglobal
$_SERVER.$_SERVER['SERVER_NAME']descreve o servidor web que lida com a requisição HTTP;mysqli_get_host_info()descreve a conexão com o banco de dados — duas coisas não relacionadas. - A string é para humanos, não para análise. Se você precisar de valores estruturados, inspecione o host que você passou para
mysqli_connect()em vez de dividir essa string. - Para a versão da biblioteca cliente MySQL (em vez do host de conexão), use
mysqli_get_client_info(); para o lado do servidor, usemysqli_get_server_info().
Conclusão
mysqli_get_host_info() é uma função de diagnóstico pequena mas prática: informa como seu script alcançou o servidor MySQL. Use-a quando precisar confirmar ou registrar o transporte da conexão, e recorra a mysqli_get_proto_info() ou mysqli_get_connection_stats() quando precisar de mais detalhes.