Функция TIMER_FLOAT() для измерения времени выполнения кода в PHP – WP 5.8.0

TIMER_FLOAT() │ WP 5.8.0

Функция TIMER_FLOAT() позволяет узнать, сколько времени прошло с момента начала выполнения скрипта PHP. Эта функция полезна для мониторинга производительности и оптимизации кода.

Возврат значения

Функция возвращает число с плавающей запятой (float), которое представляет количество секунд, прошедших с начала выполнения скрипта PHP.

Использование

Для вызова функции просто используйте:

timer_float();

Примеры работы

Пример 1: Проверка времени, прошедшего с начала скрипта

Посмотрим, как работает функция, если вызвать ее несколько раз:

var_dump(timer_float());  // float(0.069790124893188)

sleep(1); // Задержка на 1 секунду

var_dump(timer_float());  // float(1.0698711872101)

Пример 2: Форматирование значения

Вот пример, как можно отформатировать результат функции в удобочитаемом формате:

$timer = timer_float();
printf('Прошло %.4F сек.', $timer); // Вывод: "Прошло 0.1347 сек."

Пример 3: Измерение времени от начала PHP до начала WordPress

Эта функция показывает время с момента запуска PHP до начала выполнения ядра WordPress. Сравнив время, можно увидеть, сколько времени проходит перед стартом WordPress:

if (isset($_GET['check_time'])) {
    add_filter('init', 'my_check_time', PHP_INT_MAX);
}

function my_check_time() {
    $timer_float = timer_float();
    $timer_stop = timer_stop(0, 15);

    var_dump($timer_float); // выводит время с начала PHP
    var_dump($timer_stop);  // выводит время с начала WordPress

    var_dump($timer_float - (float)$timer_stop);  // разница во времени
    exit;
}

Как видно, от начала PHP до старта WordPress проходит 0.00196 секунды. Я ожидал, что это будет быстрее.

Пример 4: Время загрузки ядра WordPress

На хуке wp_loaded можно узнать, сколько времени понадобилось для загрузки всего ядра WordPress, до выполнения запросов к базе данных:

if (isset($_GET['check_time'])) {
    add_filter('wp_loaded', 'my_check_time', PHP_INT_MAX);
}

function my_check_time() {
    var_dump(timer_float());  // выводит время загрузки ядра
    exit;
}

Здесь мы видим, что загрузка ядра WordPress заняла 0.0358 секунды.

Пример 5: Вывод времени создания страницы, количества запросов и использования памяти

Чтобы выводить информацию о количестве запросов к базе данных, времени выполнения скрипта и объеме использованной памяти, вставьте следующий код в подвал сайта и админ-панели:

add_filter('wp_footer', 'wp_usage'); // на сайте
add_filter('admin_footer_text', 'wp_usage'); // в админке

function wp_usage() {
    echo sprintf(
        'SQL: %d за %.3F сек. %s MB',
        get_num_queries(),
        timer_float(),
        round(memory_get_peak_usage()/1024/1024, 2)
    );
}

Пример 6: Измерение времени выполнения кода на чистом PHP

Для измерения времени выполнения не нужно использовать функции WordPress. Мы можем воспользоваться встроенной функцией PHP microtime():

$time_start = microtime(true);

// код, время выполнения которого мы измеряем
get_posts();

$diff = sprintf('%.7f', microtime(true) - $time_start);
echo "get_posts() работал $diff секунды";

Пример вывода: get_posts() работал 0.0030319690704346 секунды.

История изменений

  • С версии 5.8.0 функция была введена в WordPress.

Код функции TIMER_FLOAT()

function timer_float() {
    return microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'];
}

Связанные функции

  • timer_start(): Начинает тайминг.
  • timer_stop(): Завершает измерение времени.

Эти функции позволят вам более подробно отслеживать время выполнения вашего кода и оптимизировать производительность вашего сайта на WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *