WordPress как на ладони

Профилирование и ведение журнала (лог)

Query Monitor

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( 'Шеф, все пропало!' );
3 комментария
    Войти