Мониторинг PHP-приложений с помощью библиотеки php-ast и xhprof

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое мониторинг PHP-приложений и зачем он нужен?

Мониторинг PHP-приложений — это процесс сбора, анализа и визуализации метрик производительности, ошибок и использования ресурсов веб-приложений, написанных на PHP. Без мониторинга невозможно выявить узкие места, утечки памяти, медленные запросы к БД или неоптимальный код. Ключевые библиотеки для этого — xhprof (профилирование) и php-ast (анализ синтаксических деревьев).

Как установить?

Для установки xhprof (расширение для профилирования) выполните:

pecl install xhprof

Добавьте в php.ini:

extension=xhprof.so

Для php-ast (анализ AST):

pecl install ast

Затем подключите в composer:

composer require phpunit/php-code-coverage

Основные функции

  • Профилирование запросов — xhprof собирает данные о времени выполнения, количестве вызовов функций и использовании памяти.
  • Анализ синтаксиса — php-ast позволяет разбирать PHP-код в абстрактное синтаксическое дерево для статического анализа.
  • Мониторинг ошибок — интеграция с Sentry или Monolog для логирования исключений.
  • Метрики производительности — время ответа, количество запросов в секунду (RPS), использование CPU/RAM.

Пример кода на PHP

<?php
// Профилирование с xhprof
xhprof_enable();

// Ваш код приложения
$result = someHeavyFunction();

$xhprofData = xhprof_disable();
include_once '/path/to/xhprof_lib/utils/xhprof_lib.php';
include_once '/path/to/xhprof_lib/utils/xhprof_runs.php';
$xhprofRuns = new XHProfRuns_Default();
$runId = $xhprofRuns->save_run($xhprofData, 'my_app');
echo 'Profiler run ID: ' . $runId;

// Анализ AST с php-ast
$code = file_get_contents('index.php');
$ast = ast\parse_code($code, $version = 70);
echo ast\get_kind_name($ast->kind);
?>

Когда использовать?

Мониторинг необходим в production-среде для отслеживания деградации производительности после релизов, при нагрузочном тестировании, а также для поиска утечек памяти в долгоживущих процессах (например, в очередях или WebSocket-серверах). Библиотеки xhprof и php-ast идеально подходят для интеграции в CI/CD пайплайны и системы observability (Prometheus, Grafana).

Заключение

Использование профилировщиков и статических анализаторов — обязательная практика для поддержания высокого качества PHP-приложений. Начните с установки xhprof и php-ast, чтобы получить полную картину работы вашего кода.

Рекомендаций