WordPress как на ладони
Прибыльная монетизация. Выгодно. Безопасно. Стабильно. Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

timer_stop()WP 0.71

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

Используйте более новую функцию timer_float() (с WP 5.8), когда нужно получить время выполнения кода с начала работы самого PHP, а не WordPress.

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

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

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

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

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

Хуков нет.

Возвращает

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

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

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

Примеры

1

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

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

// Выводит данные о кол-ве запросов к БД, время выполнения скрипта
// и размер затраченной памяти.
add_action( 'admin_footer_text', 'wp_usage' ); // в подвале админки
add_action( 'wp_footer', 'wp_usage' );         // в подвале сайта

function wp_usage(){

	echo sprintf( 'SQL: %d за %s сек. %s MB',
		get_num_queries(),
		timer_stop( 0, 3 ),
		round( memory_get_peak_usage()/1024/1024, 2 )
	);
}
0

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

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

Несколько вызовов:

echo timer_stop( 0 );  // Секунд: 0,055
sleep( 1 );
echo timer_stop( 0 );  // Секунд: 1,055
0

#3 Измерим сколько времени прошло до момента загрузки основной части ядра WP

if( isset( $_GET['check_time'] ) ){

	add_filter( 'init', function(){

		echo timer_stop( 0, 6 ); // выведет: 0,002664

		exit;
	}, PHP_INT_MAX );

}

/*
Переходим по URL http://site/?check_time и видим: 0.035360
*/
0

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

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

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

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

Заметки

  • Global. float. $timestart Seconds from when timer_start() is called.
  • Global. float. $timeend Seconds from when function is called.

Список изменений

С версии 0.71 Введена.

Код timer_stop() WP 6.1.1

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;
}
3 комментария
    Войти