Профилирование и ведение журнала (лог)
Query Monitor- Отладка запросов REST API
- Кликабельные имена функций и стека вызова
- Отключение обработки PHP ошибок плагинов, тем, всех ошибок
- Профилирование и ведение журнала (лог)
- Символическая ссылка db.php
- Утверждения (assertions)
Query Monitor 3.0 получил функцию, которая позволяет разработчикам профилировать время выполнения и использование памяти их кода. Query Monitor 3.1 получил PSR-3 совместимый регистратор, который позволяет разработчикам регистрировать отладочные сообщения в Query Monitor.
Некоторые из других изменений в QM 3.1:
- Улучшения пользовательского интерфейса для мобильных / сенсорных.
- Улучшения макета панелей скриптов и стилей.
- Добавлена панель параметров с информацией обо всех доступных константах конфигурации.
Давайте рассмотрим профилирование и ведение журнала подробно.
Профилирование
Базовое профилирование можно выполнить и отобразить в панели QM Тайминги с помощью кода:
// Запустите таймер 'foo': do_action( 'qm/start', 'foo' ); // Ваш код my_potentially_slow_function(); // Остановим таймер 'foo': do_action( 'qm/stop', 'foo' );
Время и примерное использование памяти между событиями qm/start и qm/stop для данной функции, будут записаны и показаны в панели Тайминги. Таймеры могут быть вложенными, хотя следует учитывать, что это снижает точность вычислений использования памяти.
Тайминга также можно фиксировать в момент выполнения кода через событие qm/lap:
// Начало таймера 'bar':
do_action( 'qm/start', 'bar' );
// Пройдемся по некоторым данным:
foreach ( range( 1, 10 ) as $i ) {
my_potentially_slow_function( $i );
do_action( 'qm/lap', 'bar' );
}
// Конец таймера 'bar':
do_action( 'qm/stop', 'bar' );
Вот как выглядит панель Таймингов:
Учтите, что эти данные нужно рассматривать как приблизительные, поскольку они фиксируются на уровне PHP и могут быть искажены средой и другим кодом. Если Вам требуются высокоточные тайминги, необходимо использовать низкоуровневый инструмент профилирования, такой как XHProf.
Логирование (журнал)
Отладочные сообщения можно отправлять в панель «Журналы» в QM с помощью событий в коде:
do_action( 'qm/debug', 'Это произошло!' );
Логгер совместим с PSR-3, поэтому можно использовать следующие события (они соответствуют уровням журнала PSR-3):
qm/emergencyqm/alertqm/criticalqm/errorqm/warningqm/noticeqm/infoqm/debug
Уровень лога «предупреждение» (warning) или выше будет показан в панели Query Monitor.
Вот как выглядит панель журналов:
Контекстная интерполяция может использоваться с помощью синтаксиса фигурных скобок:
do_action( 'qm/warning', 'Непредвиденное значение {foo}', [
'foo' => $foo,
] );
WP_Error или Exception объекты могут быть переданы напрямую в регистратор:
if ( is_wp_error( $response ) ) {
do_action( 'qm/error', $response );
}
try {
// your code
} catch ( Exception $e ) {
do_action( 'qm/error', $e );
}
Ну и наконец, для ведения журнала, вместо вызова do_action() можно использовать статические методы класса QM:
QM::error( 'Шеф, все пропало!' );

