Профилирование PHP с Xdebug
Включайте профилирование Xdebug и анализируйте вывод callgrind, чтобы находить медленные функции
«Профилирование PHP с Xdebug» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Что такое Xdebug?
Xdebug — это расширение PHP, предоставляющее возможности отладки, анализа покрытия кода и профилирования. Профилировщик записывает, сколько времени занимает каждый вызов функции и сколько раз он выполняется.
Установка Xdebug
Установите расширение через PECL или менеджер пакетов.
# Via PECL:
$ pecl install xdebug
# Via apt:
$ apt install php-xdebug
# Verify:
$ php -v | grep XdebugВключение профилировщика
Настройте Xdebug в php.ini, чтобы включить профилирование.
# php.ini
[xdebug]
zend_extension=xdebug.so
xdebug.mode=profile
xdebug.output_dir=/tmp/xdebug
xdebug.profiler_output_name=cachegrind.out.%tПрофилирование по триггеру
Вместо профилирования каждого запроса используйте триггер, чтобы запускать профилирование по требованию.
# php.ini
xdebug.mode=profile
xdebug.start_with_request=trigger
# Trigger via query parameter or cookie:
curl "https://example.com/?XDEBUG_PROFILE=1"Вывод Callgrind
Xdebug записывает файл cachegrind.out.*. Этот формат читается средствами визуализации профилей.
Анализ с помощью KCachegrind и QCachegrind
Откройте файл callgrind в KCachegrind (Linux) или QCachegrind (macOS/Windows), чтобы увидеть количество вызовов функций, общее время, собственное время и дерево вызовов.
Анализ с помощью WebGrind
WebGrind — это средство просмотра callgrind в браузере, которое проще настроить, чем настольный инструмент.
$ docker run -p 8080:80 jokkedk/webgrind -v /tmp/xdebug:/tmpЧтение вывода профилировщика
Ищите функции с наибольшей «полной стоимостью» (общее время вместе с вызываемыми функциями) и «собственной стоимостью» (время только внутри тела функции). Собственная стоимость показывает фактическое узкое место.
Распространённые найденные узкие места
Типичные находки: запросы к базе данных по схеме N+1, неэффективные регулярные выражения, лишние вызовы API, неоптимизированные связи Eloquent и дорогостоящий рендеринг представлений.
Профилирование и отладка
Профилирование измеряет производительность (время и количество вызовов). Отладка (также функция Xdebug) приостанавливает выполнение в точках останова для проверки кода. Используйте отдельные режимы Xdebug.
Blackfire как альтернатива
Blackfire.io — коммерческий инструмент профилирования с продуманным интерфейсом, интеграцией с CI и проверками производительности. В командных средах ему обычно отдают предпочтение перед непосредственным профилированием с помощью Xdebug.
Итоги
Включите режим профилировщика Xdebug в php.ini, запустите запрос по триггеру и откройте файл callgrind в KCachegrind или WebGrind. Чтобы найти узкие места, сосредоточьтесь на функциях с наибольшей полной и собственной стоимостью.
Быстрая проверка
Что означает «собственная стоимость» в отчёте профилировщика?
Часто задаваемые вопросы
Урок «Профилирование PHP с Xdebug» бесплатный?
Да — полный текст урока «Профилирование PHP с Xdebug» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Профилирование PHP с Xdebug»?
Включайте профилирование Xdebug и анализируйте вывод callgrind, чтобы находить медленные функции Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Профилирование PHP с Xdebug»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Профилирование PHP с Xdebug
- OPcache: кэширование байткода
- Оптимизация запросов к базе данных
- Управление памятью и советы по производительности