PHP

Время и память выполнения скрипта PHP

Несколько методов как узнать время генерации страницы и затраченный объем памяти PHP скрипта. 

1

Время выполнения скрипта

Вариант 1

$start = microtime(true);

...

$time = microtime(true) - $start;
echo $time . ' сек.';

Результат:

0.24132013320923 сек.

Вариант 2

Вместо $start = microtime(true) брать значение из переменной $_SERVER['REQUEST_TIME_FLOAT'], которая содержит время запроса к серверу.

...

$time = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'];
echo $time . ' сек.';

Вариант 3

Если на сервере установлен Xdebag.

...

echo xdebug_time_index() . ' сек.';

Среднее время

Т.к. результат «скачет» и зависит от многих факторов (нагрузка на хостинг и т.д.), доработаем скрипт, добавив запись результата в лог и подсчет среднего арифметического значения.

$start = microtime(true);

...

$time = round(microtime(true) - $start, 3);

$f = fopen('time.log', 'a');
fwrite($f, $time . PHP_EOL);
fclose($f);

$log = file('time.log');
$result = round(array_sum($log) / count($log), 3); 
echo $result . ' сек.';
2

Затраченная память

Функция memory_get_usage() – возвращает количество памяти в байтах, которое было выделено PHP-скрипту на данный момент.

В Xdebug есть функция xdebug_memory_usage(), которая возвращает тот же результат.

$memory = memory_get_usage();

...

echo (memory_get_usage() - $memory) . ' байт';

Результат:

33558608 байт

Конвертация результата в килобайты и мегабайты

$memory = memory_get_usage();

...

$memory = memory_get_usage() - $memory;

$i = 0;
while (floor($memory / 1024) > 0) {
    $i++;
    $memory /= 1024;
}

$name = array('байт', 'КБ', 'МБ');
echo round($memory, 2) . ' ' . $name[$i];

Результат:

32 МБ
3

Время и память скрипта

Объединим приведенные методы в один скрипт.

$start = microtime(true);
$memory = memory_get_usage();

...

$memory = memory_get_usage() - $memory;
$time = microtime(true) - $start;

// Подсчет среднего времени.
$f = fopen('time.log', 'a');
fwrite($f, $time . PHP_EOL);
fclose($f);
$log = file('time.log');
$time = round(array_sum($log) / count($log), 3); 

// Перевод в КБ, МБ.
$i = 0;
while (floor($memory / 1024) > 0) {
    $i++;
    $memory /= 1024;
}

$name = array('байт', 'КБ', 'МБ');
$memory = round($memory, 2) . ' ' . $name[$i];

echo $time . ' сек. / ' . $memory;
0.219 сек. / 32 МБ
06 ноября 2018
В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают или совсем не...
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
Библиотека GD дает возможность работать с изображениями в PHP. Далее представлены примеры как изменить размер, вырезать...