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

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

1

Вариант 1

$start = microtime(true);

...

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

Результат

0.24132013320923 сек.

Вариант 2

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

...

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

Вариант 3

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

...

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

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

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

$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 . ' сек.';
PHP
2

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

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

$memory = memory_get_usage();

...

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

Результат

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];
PHP

Результат

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;
PHP
0.219 сек. / 32 МБ
06.11.2018, обновлено 03.10.2019
17594
Следующая запись PHP транслит

Комментарии

, чтобы добавить комментарий.

Другие публикации

Загрузка файлов на сервер PHP
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
75695
+25
Преобразование цветов в PHP
Несколько примеров как перевести цвета из HEX в RGB и обратно с помощью PHP.
16984
-1
Примеры использования cURL в PHP
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
245965
+22
Запись в лог-файл в PHP
Несколько вариантов как быстро организовать запись данных в лог-файл.
89851
+13
Создание товарной накладной в PHPExcel
Пример, как сформировать товарную накладную с помощью библиотеки PHPExcel. В результате получится файл в формате xlsx...
20810
+8
Шаблонизатор Smarty
Smarty это компилирующий обработчик шаблонов для PHP позволяющий отделить логику и HTML-верстку веб-приложения.
29693
+5