• Модуль: perfmon
  • Путь к файлу: ~/bitrix/modules/perfmon/classes/general/keeper.php
  • Класс: CPerfomanceKeeper
  • Вызов: CPerfomanceKeeper::SetPageTimes
static function SetPageTimes($START_EXEC_CURRENT_TIME, &$arFields)
{
	list($usec, $sec) = explode(" ", $START_EXEC_CURRENT_TIME);
	$CURRENT_TIME = (float)$sec + (float)$usec;

	if (defined("START_EXEC_PROLOG_BEFORE_1"))
	{
		$PROLOG_BEFORE_1 = (float)START_EXEC_PROLOG_BEFORE_1;

		if (defined("START_EXEC_AGENTS_1") && defined("START_EXEC_AGENTS_2"))
		{
			$AGENTS_2 = (float)START_EXEC_AGENTS_2;
			$AGENTS_1 = (float)START_EXEC_AGENTS_1;
			$arFields["~AGENTS_TIME"] = $AGENTS_2 - $AGENTS_1;
		}
		else
		{
			$arFields["~AGENTS_TIME"] = 0;
		}

		if (defined("START_EXEC_EVENTS_1") && defined("START_EXEC_EVENTS_2"))
		{
			list($usec, $sec) = explode(" ", START_EXEC_EVENTS_2);
			$EVENTS_2 = (float)$sec + (float)$usec;
			list($usec, $sec) = explode(" ", START_EXEC_EVENTS_1);
			$EVENTS_1 = (float)$sec + (float)$usec;
			$arFields["~EVENTS_TIME"] = $EVENTS_2 - $EVENTS_1;
		}
		else
		{
			$arFields["~EVENTS_TIME"] = 0;
		}

		if (defined("START_EXEC_PROLOG_AFTER_1") && defined("START_EXEC_PROLOG_AFTER_2"))
		{
			$PROLOG_AFTER_1 = (float)START_EXEC_PROLOG_AFTER_1;
			$PROLOG_AFTER_2 = (float)START_EXEC_PROLOG_AFTER_2;
			$arFields["~PROLOG_AFTER_TIME"] = $PROLOG_AFTER_2 - $PROLOG_AFTER_1;

			$arFields["~PROLOG_BEFORE_TIME"] = $PROLOG_AFTER_1 - $PROLOG_BEFORE_1;

			$arFields["~PROLOG_TIME"] = round($PROLOG_AFTER_2 - $PROLOG_BEFORE_1 - $arFields["~AGENTS_TIME"], 4);

			if (defined("START_EXEC_EPILOG_BEFORE_1"))
			{
				$EPILOG_BEFORE_1 = (float)START_EXEC_EPILOG_BEFORE_1;

				$arFields["~WORK_AREA_TIME"] = $EPILOG_BEFORE_1 - $PROLOG_AFTER_2;

				if (defined("START_EXEC_EPILOG_AFTER_1"))
				{
					$EPILOG_AFTER_1 = (float)START_EXEC_EPILOG_AFTER_1;
					$arFields["~EPILOG_BEFORE_TIME"] = $EPILOG_AFTER_1 - $EPILOG_BEFORE_1;
					$arFields["~EPILOG_AFTER_TIME"] = $CURRENT_TIME - $EPILOG_AFTER_1 - $arFields["~EVENTS_TIME"];
				}
				else
				{
					$arFields["~EPILOG_BEFORE_TIME"] = 0;
					$arFields["~EPILOG_AFTER_TIME"] = 0;
				}

				$arFields["~EPILOG_TIME"] = $CURRENT_TIME - $EPILOG_BEFORE_1;
			}
			else
			{
				$arFields["~WORK_AREA_TIME"] = $CURRENT_TIME - $PROLOG_AFTER_2;
				$arFields["~EPILOG_BEFORE_TIME"] = 0;
				$arFields["~EPILOG_AFTER_TIME"] = 0;
				$arFields["~EPILOG_TIME"] = 0;
			}
		}

		$arFields["~PAGE_TIME"] = $CURRENT_TIME - $PROLOG_BEFORE_1;
	}
	else
	{
		$arFields["~PAGE_TIME"] = $CURRENT_TIME - START_EXEC_TIME;
	}
}