При написании ресурсозатратных функций и скриптов в php может быть очень полезна информация о том, сколько времени и памяти использует ваша программа. Это знание может быть особенно критично на шаред-хостингах, где CP, выделенное на обработку задач ограничено.

CP — величина, характеризующая время, затраченное центральным процессором на выполнение процессов пользователя (например, обработку http-запросов web-сервером, выполнение php-скриптов, выполнение задач через crontab).

beget.com

Общая логика для решения нашей задачи будет выглядеть так:

  • в самом начале выполнения нашей функции мы запоминаем текущее время в переменную, после выполнения снова получаем текущее время и вычитаем из него начальное;
  • так же касается количества памяти: в начале функции мы получаем в переменную количество памяти в байтах, которое было выделено 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 печатаем переменные на экране
		if ( $dev_mode == true ) vardump('Функция theme_name_function; $dev_mode = true; хук before_site_content');

		// ваш код тут




		// получаем конечное время
		$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() преобразует количество байтов понятный для человека формат — Кб, Мб, Гб. Об их работе вы можете узнать в соответствующих статьях.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

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