0Pricing
PHP Academy · Урок

Профилирование 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 — локальная установка не требуется.

Все уроки этого курса

  1. Профилирование PHP с Xdebug
  2. OPcache: кэширование байткода
  3. Оптимизация запросов к базе данных
  4. Управление памятью и советы по производительности
← Назад к PHP Academy