timer_stop() WP 0.71

Отримує час виконання PHP скрипту з моменту початку створення сторінки і до моменту виклику цієї функції.

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

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

Ця функція працює на основі глобальної змінної $timestart , яка встановлюється WordPress на початку генерації сторінки, у файлі 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.0.2

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *