====== Пакет PROFILE ====== Пакет предназначен для профайлинга приложений написанных с использованием Limb. Основные функции, предоставляемые пакетом: * автопрофайлинг запросов к БД и кэшам, с последующим выводом в различных формах * утилиты для "ручного" профайлинга отдельных участков ваших приложений ===== Автопрофайлинг запросов ===== Автопрофайлинг умеет собирать информацию о запросах в БД (тест, время, stack trace), запросах к кешам (ключ, время, stack trace) и информацию о окружении (содержимое _SERVER, _ENV и т.д.). Поддерживаются несколько методов вывода информации о запросе: * "панель" - отображается вверху страницы, и представляет из себя панель с выпадающими секциями * "таблица" - отображается внизу страницы, как список таблиц-секций * "лог" - not implemented yet ==== Настройка ==== Файл profile.conf.php: $conf['enabled'] = true; $conf['profile_reporter'] = 'lmbProfilePanelReporter'; //переключение методов вывода (lmbProfilePanelReporter - панель, lmbProfileTableReporter - таблица) ==== Интеграция ==== Для включения автопрофайлинга в вашем приложении необходимо включить [[limb3:ru:packages:web_app:filter_chain|фильтр]] **lmbProfileReportingFilter** (он находится в файле limb/profile/src/filter/lmbProfileReportingFilter.class.php) в начало вашего приложения. Если вы используете **lmbWebApplication** в качестве базового класса приложения, то интеграция может выглядеть так: lmb_require('limb/web_app/src/lmbWebApplication.class.php'); class MyApplication extends lmbWebApplication { function __construct() { $this->addPreActionFilter(new lmbHandle('limb/profile/src/filter/lmbProfileReportingFilter.class.php')); } } Если же вы построили свое приложение "с нуля", то lmb_require('limb/filter_chain/src/lmbFilterChain.class.php'); lmb_require('limb/core/src/lmbHandle.class.php'); class LimbApplication extends lmbFilterChain { function __construct() { $this->registerFilter(new lmbHandle('limb/web_app/src/filter/lmbUncaughtExceptionHandlingFilter')); //Обратите внимание, что фильтр расположен после lmbUncaughtExceptionHandlingFilter. Это необходимо для того, чтобы отлавливать ошибки, возникающие в работе самого lmbProfileReportingFilter (ошибки в настройке БД, кэшей, etc). $this->registerFilter(new lmbHandle('limb/profile/src/filter/lmbProfileReportingFilter.class.php')); ... ===== "Ручной" профайлинг ===== FIXME см. limb/profile/tests/cases/toolkit/lmbProfileUtilsToolsTest.class.php