W3docs

get_host_info

Функция mysqli_get_host_info() в PHP возвращает информацию о хосте для подключения к MySQL: тип транспорта и имя хоста.

Функция mysqli_get_host_info() возвращает одну строку, описывающую способ подключения вашего PHP-скрипта к серверу MySQL — имя хоста вместе с типом транспорта (TCP/IP, Unix-сокет или именованный канал). На этой странице описаны синтаксис, возможные возвращаемые значения, процедурный и объектно-ориентированный стили использования, а также практические случаи применения функции.

Что возвращает get_host_info()

mysqli_get_host_info() — встроенная функция PHP, которая при наличии открытого подключения MySQLi возвращает удобочитаемую строку с описанием типа подключения и хоста. Типичные возвращаемые значения:

  • localhost via TCP/IP — подключение к локальному серверу через сетевой сокет.
  • Localhost via UNIX socket — подключение через локальный Unix-доменный сокет (по умолчанию на Linux/macOS, когда хост — localhost).
  • 127.0.0.1 via TCP/IP — подключение к явному IP-адресу по TCP/IP.
  • db.example.com via TCP/IP — подключение к удалённому хосту.

Функция доступна только для чтения и никогда не изменяет подключение — она просто сообщает о транспорте, согласованном драйвером. Это делает её удобной для отладки (подтверждение, что вы действительно используете ожидаемый сокет/хост) и логирования диагностической информации о подключении.

Синтаксис

mysqli_get_host_info(mysqli $mysqli): string
ПараметрОписание
$mysqliДопустимый объект подключения, возвращённый функцией mysqli_connect() или mysqli_real_connect().

Возвращаемое значение: строка, описывающая тип подключения к серверу. Функция никогда не возвращает false; если ссылка недействительна, PHP вместо этого вызывает предупреждение.

Процедурный стиль

Передайте объект подключения, возвращённый функцией 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);
?>

Сначала мы вызываем mysqli_connect() для открытия подключения, затем проверяем результат, чтобы в случае ошибки корректно завершить работу с помощью mysqli_connect_error() вместо генерации предупреждений. Передача ссылки в mysqli_get_host_info() возвращает описание транспорта, которое мы выводим. На Linux-хосте с localhost вывод выглядит так:

Host information: Localhost via UNIX socket

Объектно-ориентированный стиль

Процедурная функция имеет эквивалентное свойство объекта mysqliget_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();
?>

Оба стиля возвращают одну и ту же строку. Обратите внимание, что в объектно-ориентированном варианте get_host_info обращается как к свойству, а не вызывается как метод.

Когда это использовать?

  • Проверка транспорта. Принудительное использование TCP/IP (например, указание 127.0.0.1 вместо localhost) иногда требуется для инструментов или TLS. get_host_info() подтверждает, какой именно транспорт был получен.
  • Логирование подключений. Запись строки хоста вместе со статистикой подключения даёт быстрый наглядный отчёт о том, к чему был подключён запрос.
  • Устранение проблемы «работает локально, но не в продакшене». Неожиданное различие via UNIX socket и via TCP/IP нередко объясняет различия в правах доступа или настройках брандмауэра.

Частые ошибки

  • Не путайте её с суперглобальной переменной $_SERVER. $_SERVER['SERVER_NAME'] описывает веб-сервер, обрабатывающий HTTP-запрос; mysqli_get_host_info() описывает подключение к базе данных — это два независимых понятия.
  • Строка предназначена для людей, а не для разбора. Если вам нужны структурированные значения, проверяйте хост, переданный в mysqli_connect(), а не разбивайте эту строку.
  • Для получения версии клиентской библиотеки MySQL (а не хоста подключения) используйте mysqli_get_client_info(); для серверной стороны — mysqli_get_server_info().

Заключение

mysqli_get_host_info() — небольшая, но практичная диагностическая функция: она сообщает, как ваш скрипт подключился к серверу MySQL. Используйте её, когда нужно подтвердить или зафиксировать транспорт подключения, а для получения более подробной информации обращайтесь к mysqli_get_proto_info() или mysqli_get_connection_stats().

Практика

Практика
Что возвращает mysqli_get_host_info()?
Что возвращает mysqli_get_host_info()?
Was this page helpful?