timer_stop()
Отримує час виконання 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 Виведемо час генерації сторінки, кількість запитів і скільки було витрачено пам’яті
Виведемо все це у підвалі сайту (у фронті) та у підвалі адмінки:
// Виводить дані про кількість запитів до БД, час виконання скрипту
// та розмір витраченої пам'яті.
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 )
);
}
#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
#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
*/
#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() 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;
}