<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * MaxSite CMS
 * (c) https://max-3000.com/
 * 
 */
 
// профилирование - старт
// первый параметр метка
function _mso_profiler_start($point = 'first', $echo = false)
{
	global $_points;

	$CI = &get_instance();

	$CI->benchmark->mark($point . '_start'); // отмечаем время

	$mem0 = round(memory_get_usage() / 1024 / 1024, 2); // текущая память

	$_points[$point]['mem0'] = $mem0;

	if ($echo)
		pr('start ' . $point . ': ' . $_points[$point]['mem0'] . 'MB');
}

// профилирование конец
function _mso_profiler_end($point = 'first', $echo = true)
{
	global $_points;

	$CI = &get_instance();

	$CI->benchmark->mark($point . '_end');

	$_points[$point]['time'] = $CI->benchmark->elapsed_time($point . '_start', $point . '_end');

	$mem1 = round(memory_get_usage() / 1024 / 1024, 2); // текущая память

	$_points[$point]['mem1'] = $mem1;
	$_points[$point]['mem'] = round($mem1 - $_points[$point]['mem0'], 4); // разница

	if ($echo)
		pr(
			$point . ': '
				. $_points[$point]['mem'] . 'MB t: '
				. $_points[$point]['time'] . 's Total: '
				. $_points[$point]['mem1'] . 'MB'
		);
	else
		return $_points[$point];
}

/**
 *	Функция для записи лога в файл
 *
 *	mso_log('текст', 'заголовок', '_log.txt');
 *	Для сброса: mso_log() или mso_log(0, '', 'файл') 
 *
 *	Вместо текста можно передать любые данные — будет использован вывод через print_r()
 *	Файл указывается относительно корня сайта
 *	если $framing = true, то добавляется рамка, иначе все в одну строчку как есть и без $name
 *
 */
function mso_log($var = 0, $name = 'LOG', $f = '_log.txt', $framing = true)
{
	if ($var === 0) {
		file_put_contents(FCPATH . $f,  '');
		return;
	}

	if (!is_scalar($var)) $var = print_r($var, true);

	if ($framing)
		file_put_contents(FCPATH . $f, "\n================= " . $name . " =================\n" . $var . "\n================= /" . $name . " =================\n", FILE_APPEND);
	else
		file_put_contents(FCPATH . $f, $var, FILE_APPEND);
}

# end of file
