2.8.24. Профилирование PHP
О профилировании
Профилирование — сбор подробной информации о времени работы функций скрипта и потреблением оперативной памяти в процессе обработки запроса к сайту. С помощью этой информации разработчик сайта может выявлять наиболее медленные участки кода, чтобы в дальнейшем их оптимизировать и сократить время работы скриптов.
Что может показать профилирование:
- Какие функции и сколько раз выполнялись в процессе работы скрипта.
- Сколько времени выполнялась каждая функция.
- Какой объём оперативной памяти использовался функцией и пиковые значения потребления.
Порядок действий
Профилировщик
Важные моменты:
- Профилировщик можно включать для сайтов с версиями PHP 7.0-8.1.
- На время работы профилировщика автоматически отключается параметр open_basedir.
- Отчёты профилировщика хранятся в дисковом пространстве хостинг-аккаунта и занимают объём и иноды.
Работа с профилировщиком выполняется в разделе «Хостинг → Мои сайты → Профилирование PHP»:
Включение
Примечания:
- При включении в
php.ini
подключается расширение и добавляется директива видаauto_prepend_file = "/home/{$login}/.system/profiler/profiler_{$host_id}.php"
для запуска профилировщика. - Директива добавляется отдельно и не влияет на добавленные ранее
auto_prepend_file
.
Выберите нужное время в блоке «Профилирование PHP» и нажмите «Включить профилировщик»:
Список IP
Отчёты
Примечания:
- Файлы отчётов хранятся в каталоге
.system/profiler
в корневом каталоге хостинг-аккаунта. - Отчёты удаляются только вручную. Таким образом, они остаются доступными для анализа после отключения профилировщика.
Все результаты работы профилировщика выводятся в блоке «Отчёты профилировщика»:
В блоке выводится текущий объём, который занимают на диске существующие отчёты. Здесь же можно удалить все отчёты кнопкой «очистить».
Колонки списка:
- «Дата» — дата и время обработки запроса.
- «URL» — URL запроса.
- «CPU» — время работы процессора при обработке запроса.
- «Время выполнения» — время работы скрипта при обработке запроса.
- «Пиковое потребление памяти» — максимальное потребление памяти при обработке запроса.
Кнопка «Подробный отчёт» открывает подробную информацию о работе скрипта при обработке запроса:
В подробном отчёте:
- «Дата и время запуска скрипта».
- «IP» — IP, с которого был запрос.
- «Точный URL» — URL, к которому был запрос.
- «Количество вызовов функций» — количество функций, выполненных скриптом при обработке запроса.
- «Распределение функций по времени выполнения» — график с долями времени выполнения разных функций по отношению к общему затраченному времени.
Колонки общего списка вызванных функций:
- «Функция» — название функции.
- «Количество вызовов» — сколько раз выполнялась функция.
- «Показатели с учётом дочерних функций»:
- «Время выполнения» — сколько времени заняло выполнение функции.
- «CPU» — сколько времени процессор был занят выполнением функции.
- «Потребление памяти» — сколько памяти было использовано в процессе выполнения функции.
- «Пиковое потребление памяти» — пиковое значение использования памяти при выполнении функции.
- «Показатели без учёта дочерних функций» — аналогично показателям выше, только без учёта дочерних функций.
Нажатие на название функции открывает подробный отчёт по этой функции:
Колонки отчёта по функции:
- «Функция» — название функции.
- «Количество вызовов» — сколько раз выполнялась функция.
- «Время выполнения, мкс» — сколько времени заняло выполнение функции.
- «CPU, мкс» — сколько времени процессор был занят выполнением функции.
- «Потребление памяти, байт» — сколько памяти было использовано в процессе выполнения функции.
- «Пиковое потребление памяти, байт» — пиковое значение использования памяти при выполнении функции.
Функции в списке делятся на три группы:
- «Текущая функция» — функция, информация о которой открыта в данный момент.
- «Родительские функции» — функции, из которых вызывалась текущая функция.
- «Дочерние функции» — функции, которые вызывались из текущей функции.
Нажимая на названия родительских/дочерних функций, можно перемещаться по иерархии всех вызванных функций и смотреть информацию по каждой из них.