timer_stop()
Получает время выполнения PHP скрипта с момента начала генерации страницы и до момента вызова этой функции.
Используйте более новую функцию timer_float() (с WP 5.8), когда нужно получить время выполнения кода с начала работы самого PHP, а не WordPress.
Получаемое число форматируется для понятного человеческого восприятия, а также локализуется с помощью number_format_i18n() или number_format(), если предыдущая функция еще не доступна в коде.
Эта функция работает на основе глобальной переменной $timestart, которая устанавливается WordPress в начале генерации страницы, в файле wp-settings.php, с помощью функции 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_filter( 'wp_footer', 'wp_usage' ); // на сайте
add_filter( 'admin_footer_text', 'wp_usage' ); // в админке
function wp_usage(){
echo sprintf(
'SQL: %d. %.3F sec. %s MB',
get_num_queries(),
timer_float(),
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.9
function timer_stop( $display = 0, $precision = 3 ) {
global $timestart, $timeend;
$timeend = microtime( true );
$timetotal = $timeend - $timestart;
if ( function_exists( 'number_format_i18n' ) ) {
$r = number_format_i18n( $timetotal, $precision );
} else {
$r = number_format( $timetotal, $precision );
}
if ( $display ) {
echo $r;
}
return $r;
}