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_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.7.1
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; }