timer_stop

Получает или выводит время выполнения 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 />';

/* выведет:
Seconds: 0,098
Seconds: 0,09774
Seconds: 0,0977458954
*/

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

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

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

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

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

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

add_filter('admin_footer_text', 'usage');
add_filter('wp_footer', 'usage');
function usage(){
	$out = sprintf( 'SQL: %d за %s сек.', get_num_queries(), timer_stop(0, 3) );
	if ( function_exists('memory_get_usage') )
		$out .= ' '. round( memory_get_usage()/1024/1024, 2 ) . ' МБ';

	echo $out;
}

Код из


wp-includes/load.php

WP 4.7.2

<?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;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *