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

timer_stop() WP 0.71

Получает или выводит время выполнения PHP скрипта с момента начала генерации страницы и до момента вызова этой функции.

Эта функция работает на основе глобальной переменной $timestart, которая устанавливается WordPress в начале генерации страницы, в файле wp-settings.php с помощью функции timer_start().

Замечу, что timer_start() вызывается почти сразу, но не в самом начале. А timer_stop() вычисляет разницу с момента вызова timer_start() до вызова timer_stop(). Т.е. вычисляется время генерации страницы в среде WordPress.

Возвращаемое число форматируется для понятного человеческого восприятия, а также локализуется с помощью number_format_i18n() (для русского вместо точки будет запятая).

Работает на основе PHP функции microtime().

Работает на раннем этапе загрузки WordPress, еще до константы SHORTINIT.

Хуков нет.

Возвращает

Строку. Число с плавающей точкой вида: "секунды.милисекунды".

Использование

timer_stop( $display, $precision );
$display(число/логический)
1/true - выводить результат на экран. 0/false - возвращать.
По умолчанию: 0 (false)
$precision(число)
Число цифр (милисекунд) после точки (после целого числа секунд) которое должно быть показано.
По умолчанию: 3

Примеры

#1 Демонстрация работы

echo 'Секунд: '. timer_stop( 0 ) .'<br />';
echo 'Секунд: '. timer_stop( 0, 5 ) .'<br />';
echo 'Секунд: '. timer_stop( 0, 10 ) .'<br />';

/* выведет:
Секунд: 0,098
Секунд: 0,09774
Секунд: 0,0977458954
*/

#2 Замерим за какое время генерируется страница WordPress

Для этого вызовем функцию в самом конце страницы, через хук wp_head:

add_action( 'wp_footer', function(){
	echo 'Столько секунд ушло на генерацию: '. timer_stop(1, 4);
});

// выведет: Столько секунд ушло на генерацию: 0,1066

#3 Выведем время генерации страницы, количество запросов и сколько было израсходовано памяти

Выведем все это в подвале сайта (во фронте) и в подвале админки:

/**
 * Выводит данные о кол-ве запросов к БД, время выполнения скрипта и размер затраченной памяти.
 *
 * @param boolean [$visible = true] Выводить как есть или спрятать в HTML комментарий, чтобы данные
 *                                   не было видно в браузере, но их можно было посмотреть в HTML коде.
 * Функцию performance() нужно использовать в конце страницы. 
 * Чтобы автоматически добавить вывод этих данных, предлагаю воспользоваться хуками:
 */
add_action( 'admin_footer_text', 'performance' ); // в подвале админки
add_action( 'wp_footer', 'performance' ); // в подвале сайта
function performance(){
	$stat = sprintf('SQL: %d за %.3f sec. %.2f MB', get_num_queries(), timer_stop(0, 3), (memory_get_peak_usage() / 1024 / 1024) );

	echo $stat; // видно
	//echo "<!-- $stat -->"; // скрыто
}

Код timer stop: wp-includes/load.php VER 4.9.1

<?php
function timer_stop( $display = 0, $precision = 3 ) {
	global $timestart, $timeend;
	$timeend = microtime( true );
	$timetotal = $timeend - $timestart;
	$r = ( function_exists( 'number_format_i18n' ) ) ? number_format_i18n( $timetotal, $precision ) : number_format( $timetotal, $precision );
	if ( $display )
		echo $r;
	return $r;
}

Cвязанные функции

Из метки: debug (дебаг)

Еще из раздела: Вспомогательные

timer_stop Комментариев нет

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр