Профилирование и ведение журнала (лог)
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/emergency
qm/alert
qm/critical
qm/error
qm/warning
qm/notice
qm/info
qm/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( 'Шеф, все пропало!' );