Время формирования страницы

Для вычисления времени формирования страницы с требуемой точностью можно использовать функцию microtime(), которая возвращает строку вида “msec sec”, где msec - составляющая в микросекундах, а sec - время в секундах, прошедшее с 1970 года. Результат, возвращаемый функцией, может быть, к примеру, таким:

0.48023600 1076713360

Такое представление не очень удобно для вычисления разницы во времени, поэтому его необходимо преобразовать в числовой вид. Иначе говоря, строку “msec sec” необходимо преобразовать к виду “sec.msec”:

<?php
$part_time = explode(' ', microtime());
$real_time = $part_time[1].substr($part_time[0], 1);
?>

Здесь при помощи функции explode() стока, принимаемая во втором параметре, разбивается на подстроки по разделителю, передаваемому в первом параметре (в нашем случае это символ пробела).

Для получения разности между двумя числами, представленными в виде строк, можно воспользоваться функцией bcsub():

<?php
$diff_time = bcsub($stop_time, $start_time, 5);
?>

Здесь 5 - число знаков после запятой. Таким образом код, вычисляющий время генерации страницы, выглядит так:

<?php
$start_time = gettime();

// Здесь код, формирующий страницу

$stop_time = gettime();
$diff_time = bcsub($stop_time, $start_time, 5);
echo '<p>Страница сформирована за '.$diff_time.' сек.</p>';

// Вспомогательная функция
function gettime()
{
  $part_time = explode(' ', microtime());
  $real_time = $part_time[1].substr($part_time[0], 1);
  return $real_time;
}
?>

Комментариев: 2

  1. Morfi:

    А не проще так?
    $time_start = microtime(1);

    // скрипт

    $time_end = microtime(1);
    $time = $time_end - $time_start;

  2. admin:

    Morfi, так конечно проще, но дополнительный аргумент для функции microtime() появился в PHP 5.0.0.

Оставьте свой отзыв