При написании ресурсозатратных функций и скриптов в php может быть очень полезна информация о том, сколько времени и памяти использует ваша программа. Это знание может быть особенно полезно на шаред-хостингах, где CP, выделенное на обработку задач ограничено.
Общая логика для решения нашей задачи будет выглядеть так:
- в самом начале выполнения нашей функции мы запоминаем текущее время в переменную, после выполнения снова получаем текущее время и вычитаем из него начальное;
- так же касается количества памяти: в начале функции мы получаем в переменную количество памяти в байтах, которое было выделено PHP скрипту на на данный момент
memory_get_usage()
, после выполнения всех операций вычитаем его.
Рассмотрим на примере:
if ( ! function_exists( 'theme_name_function' ) ) {
function theme_name_function( $atts, $content ) {
$mem_start = memory_get_usage(); // получаем текущую память
// получаем начальное время
$start_time = explode( ' ', microtime() );
$start_times = $start_time[1] + $start_time[0];
$dev_mode = true; // при установленном true печатаем переменные на экране
// ваш код тут
// получаем конечное время
$end_time = explode( ' ', microtime() );
$end_times = $end_time[1] + $end_time[0];
if ( $dev_mode == true ) vardump( 'Скрипт выполнен за ' . ($end_times - $start_times) . ' секунд' );
if ( $dev_mode == true ) vardump( 'Затрачено памяти: ' . format_bytes( memory_get_usage() - $mem_start ) );
// функция что-то возвращает
return $string;
}
}
Вы можете использовать этот код как болванку при написании своих функций, но внимательный читатель заметит, что для ее работы необходимо определить еще две функции: vardump()
и format_bytes()
.
Функция vardump()
выводит переменные на экран, а format_bytes()
преобразует количество байтов понятный для человека формат — Кб, Мб, Гб. Об их работе вы можете узнать в соответствующих статьях.