W3docs

mysqli_dump_debug_info

Узнайте, как mysqli_dump_debug_info() записывает отладочную информацию о соединении MySQLi в журнал ошибок MySQL. Синтаксис, возвращаемые значения и примеры.

PHP-функция mysqli_dump_debug_info() записывает низкоуровневую отладочную информацию о соединении MySQLi в журнал ошибок MySQL-сервера. На этой странице объясняется, что делает функция, когда она действительно полезна, её синтаксис в процедурном и объектно-ориентированном стилях, а также как интерпретировать создаваемый ею вывод.

Что делает mysqli_dump_debug_info()

mysqli_dump_debug_info() запрашивает у базовой клиентской библиотеки MySQL запись информации о внутреннем состоянии соединения в файл журнала сервера. Тип записываемых данных — открытые таблицы, кэшированные объекты, использование памяти соединением — предназначен для разработчиков самого MySQL, а не для повседневной отладки приложений. На практике вы обратитесь к ней только при поиске трудновоспроизводимой проблемы на уровне драйвера.

Функция принимает один аргумент — соединение MySQLi — и возвращает boolean: true в случае успеха и false в случае ошибки. Она не возвращает отладочный текст в ваш скрипт; информация поступает непосредственно в журнал сервера (расположение зависит от конфигурации MySQL, обычно это что-то вроде /var/log/mysql/error.log).

Синтаксис

Существуют два эквивалентных стиля, поскольку каждая функция MySQLi доступна как в виде процедурной функции, так и в виде метода объекта.

// Procedural style
mysqli_dump_debug_info(mysqli $mysql): bool

// Object-oriented style
$mysqli->dump_debug_info(): bool
ПараметрОписание
$mysqlobject соединения, возвращённый функцией mysqli_connect(). Обязателен в процедурном стиле.

Возвращаемое значение — true, если запрос на запись информации выполнен успешно, и false в противном случае.

Пример процедурного стиля

Пример ниже открывает соединение, запрашивает отладочный дамп и сообщает, был ли запрос выполнен успешно. Замените учётные данные на собственные, чтобы запустить его на реальном сервере.

Запись отладочной информации (процедурный стиль)

<?php
// Throw exceptions instead of warnings on connection errors
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = mysqli_connect("localhost", "user", "password", "my_database");

// Ask the client library to write debug info to the MySQL server log
if (mysqli_dump_debug_info($mysqli)) {
    echo "Debug information was dumped to the server log.\n";
} else {
    echo "Could not dump debug information.\n";
}

mysqli_close($mysqli);
?>

После запуска откройте журнал ошибок MySQL-сервера, чтобы прочитать дамп. Сама функция лишь сообщает, был ли запрос принят — фактический диагностический текст находится в журнале.

Пример объектно-ориентированного стиля

Если вы предпочитаете объектно-ориентированный API MySQLi, вызовите dump_debug_info() непосредственно на object соединения.

Запись отладочной информации (объектно-ориентированный стиль)

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = new mysqli("localhost", "user", "password", "my_database");

if ($mysqli->dump_debug_info()) {
    echo "Debug information was dumped to the server log.\n";
} else {
    echo "Could not dump debug information.\n";
}

$mysqli->close();
?>

Оба стиля делают одно и то же; выбирайте тот, который соответствует остальному коду вашего проекта.

Когда использовать (и когда не стоит)

Обращайтесь к mysqli_dump_debug_info() только когда подозреваете проблему внутри самого уровня соединения MySQL — например, утечку подготовленных запросов или неожиданный рост потребления памяти при долгоживущем соединении. Для обычной отладки приложений почти всегда лучше подходят более целенаправленные инструменты:

  • Чтобы прочитать сообщение об ошибке последнего неудавшегося вызова MySQLi, используйте mysqli_error().
  • Для проверки состояния и статистики соединения используйте mysqli_get_connection_stats() или проверьте статус соединения.
  • Для общего обзора расширения смотрите главу PHP MySQLi.

Примечание: функция записывает данные в журнал сервера только тогда, когда MySQL-сервер собран с поддержкой отладки и настроен на её принятие. В стандартной производственной сборке она может незаметно не выполнять ничего полезного — это ещё одна причина считать её специализированным инструментом, а не инструментом для ежедневного использования.

Заключение

mysqli_dump_debug_info() — узкий, низкоуровневый диагностический инструмент, который записывает внутренние сведения о соединении MySQLi в журнал MySQL-сервера и возвращает boolean, указывающий на успешность запроса. Он ценен для расследований на уровне драйвера, но редко является подходящим инструментом для повседневной работы — для этого предпочтительнее mysqli_error(), статистика соединений или собственное журналирование ошибок PHP.

Практика

Практика
Что возвращает PHP-функция mysqli_dump_debug_info()?
Что возвращает PHP-функция mysqli_dump_debug_info()?
Was this page helpful?