XDebug - дебаг и профилирование кода php (profiling)

С помощью систем профилирования можно собрать информацию о том, какие функции и вызовы сколько потребляют процессорного времени, что позволяет выявить наиболее медленные, ресурсоемкие участки PHP-программы.

Существуют "классические" методы отладки - echo, var_dump, print_r, но в этой статье поговорим о более продвинутом способе дебага - xDebug. Расширение php xDebug предназначено для пошагового выполнения кода и просмотра значений переменных, что поднимает программирование на PHP на новый уровень.

В этой статье рассматривается настройка xDebug в IDE PhpStorm.

Подключение xDebug

Для работы xDebug нужна работа PHP в режиме CGI - для переключения режима работы PHP просьба обратиться в поддержку, создав тикет из Личного кабинета, раздел "Помощь и поддержка". В тикете необходимо указать сайт и нужную версию PHP.

Для включения расширения xDebug нужно добавить следующие строки в конец файла cgi-bin/php.ini (если каталог и/или файл отсутствуют, их нужно создать; cgi-bin/php.ini находится в каталоге сайта):

extension = xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=8014
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1

Для проверки настроек нужно создать в корне сайта файл x.php со следующим содержимым:

<?php
phpinfo();
?>

В браузере проверяем, подхватились ли настройки php.ini:

В этом примере рассматривается настройка порта 8014. Проверка того, свободен ли выбранный порт:

Можно выбрать и стандартный порт xDebug - 9000.

Настройка работы IDE PhpStorm с xDebug

Справку по установке IDE PhpStorm можно найти на официальном сайте разработчиков.

Для обеспечения совместной работы xDebug и IDE PhpStorm необходимо создать туннель к серверу с локального компьютера. Команда для Linux:

$ ssh -R 8014:localhost:8014 deniatest@robin.beget.com

Для Windows нужно использовать утилиту PuTTy, процесс ее установки и настройки описан в этой статье. Для настройки туннеля нужно указать имя сервера либо его IP. Уточнить эту информацию можно в Личном кабинете, в таблице "Общая информация". Порт по умолчанию остается 22, протокол - SSH:

После этого нужно открыть вкладку "Tunnels" и настроить так, как указано на скриншоте. После ввода настроек нужно нажать кнопку "Open":

Здесь нужно нажать на "Да":

После чего вводим логин и пароль (они такие же, как и для доступа к Личному кабинету):

Не забудьте включить SSH в Личном кабинете. Достаточно в Панели Управления аккаунтом напротив SSH нажать кнопку "включить". Она располагается на главной странице в табличке "Общая информация"

Рассмотрим настройку PhpStorm с уже созданным локальным проектом.

Для отображения файлов сайта в PhpStorm нужно провести некоторые настройки. Во вкладке "Settings" нужно настроить порт, на котором будет работать PhpStorm. В рассматриваемом примере это порт 8014, однако, Вы можете оставить порт по умолчанию - 9000.

Затем во вкладке "Servers" нужно настроить подключение PhpStorm к домену denia0d3.bget.ru на 80 порт (необходимо указать домен, на котором ранее был установлен XDebug). Поле на скриншоте с номером 10 - это путь до проекта на локальном компьютере, поле с номером 11 - абсолютный путь на сервере до каталога Вашего сайта:

Далее во вкладке "DBGp Proxy" указываем IDE-key PhpStorm, который был ранее указан в файле php.ini, затем адрес сервера, который можно посмотреть в Личном кабинете, в таблице "Общая информация", и указываем удаленный порт, с которого будет приниматься информация о дебаге сразу PhpStorm. Нужно будет нажать "Apply", затем "OK":

Завершающие настройки дебага:

Тут нужно настроить инструмент, с помощью которого осуществляется дебаг. Нажав на кнопку, указанную на скриншоте, необходимо выбрать ранее настроенную конфигурацию (во вкладке "Server"):

Чтобы узнать значения переменных в определенном месте скриптов, нужно сообщить PhpStorm, где именно нужно искать значения. Для этого предусмотрен функционал брейкпоинтов. Сейчас нужно выставить брейкпоинт, указанный первым пунктом. Выбрав нужную строку php-кода, нужно нажать на область справа от номера строки, после чего включить прослушивание порта 8014, на который xDebug будет посылать ответ при запуске скрипта, и нажать на зеленого жука слева (расположение кнопок для Windows-версии PhpStorm может немного отличаться):

После нажатия на жука должен открыться браузер:

Через несколько секунд снова откроется PhpStorm с дебаг-панелью, где будут значения всех переменных на момент обработки кода на месте брейкпоинта:





Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".