FORP. PHP profiler
Профилирование PHP. FORP — это расширение PHP, которое предоставляет данные PHP профиля.
FORP предоставляет следующую информацию:
- измерение времени и выделенной памяти для каждой функции
- Использование процессора
- имя файла и номера строки вызова функции
- выход в формате Google Trace Event
- подпись функций
- группировка функций
- псевдонимы функций (полезны для анонимных функций)
Для того, чтобы получить информацию по интересующей функции или куску кода необходимо до начала момента исполнения анализируемого кода запустить forp profiler с помощью функции forp_start() и после выполнения тестируемого кода остановить буферизацию с помощью forp_end(). Для вывода собранной информации используется forp_dump(). Есть также набор функций для удобного отображения информации хранящейся в полученном дампе. Среди них, например, функция forp_json_google_tracer() которая позволяет сохранять полученный стек в файл в формате Google Trace Event .
Пример использования:
1 2 3 4 5 6 7 |
// Start profiler forp_start(); my_complex_function(); // Stop profiler forp_end(); // Get JSON and save it into file forp_json_google_tracer("/tmp/output.json"); |
Для просмотра результата достаточно открыть Google Chrome и перейти на chrome://tracing/ .В открывшемся окне необходимо загрузить полученный файл и наслаждаться результатом.
FORP предоставляет достаточно простую структуру, поэтому создать собственный интерфейс для удобного отображения данных не составит большого труда. Но если нужен интерфейс с богатым функционалом, то разработчик предлагает JavaScript клиент.
Для работы FORP потребуется php5.
Для установки используйте последний стабильный релиз, например:
1 2 3 4 5 |
wget https://github.com/aterrien/forp/archive/1.1.0.tar.gz tar -xvzf 1.1.0.tar.gz cd 1.1.0/ext/forp |
Скомпилируйте
1 2 3 4 5 |
phpize ./configure make && make install |
и включите расширение FORP в php.ini
1 |
extension=forp.so |
Как применять решение – решать уже Вам. Можно установить на тестовую версию Вашего проекта и оценивать результаты пропорционально относительно разницы задержек тестовой и продуктивной среды. Можно попробовать посмотреть на параметры приложения в продуктивной среде, но в таком случае нужно понимать, что дамп заполнится достаточно быстро и в дальнейшем могут быть проблемы с анализом полученных данных. В прочем, если подойти к вопросу с умом, то можно получить достаточно достоверные цифры и сделать правильные выводы.
Нужна помощь в установки профайлера php обращайтесь, [email protected]