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