function getDataSource($arOrder, $arFilter, $arSelect) { return CPerfomanceHit::GetList($arOrder, $arFilter, false, false, $arSelect); }
$module_id = "perfmon"; $RIGHT = $APPLICATION->GetGroupRight($module_id); if ($RIGHT >= "R") { IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/options.php"); IncludeModuleLangFile(__FILE__); $arAllOptions = array(array("max_display_url", GetMessage("PERFMON_OPTIONS_MAX_DISPLAY_URL"), array("text", 6)), array("warning_log", GetMessage("PERFMON_OPTIONS_WARNING_LOG"), array("checkbox")), array("cache_log", GetMessage("PERFMON_OPTIONS_CACHE_LOG"), array("checkbox")), array("sql_log", GetMessage("PERFMON_OPTIONS_SQL_LOG"), array("checkbox")), array("sql_backtrace", GetMessage("PERFMON_OPTIONS_SQL_BACKTRACE"), array("checkbox")), array("slow_sql_log", GetMessage("PERFMON_OPTIONS_SLOW_SQL_LOG"), array("checkbox"), GetMessage("PERFMON_OPTIONS_SLOW_SQL_NOTE")), array("slow_sql_time", GetMessage("PERFMON_OPTIONS_SLOW_SQL_TIME"), array("text", 6))); $aTabs = array(array("DIV" => "edit1", "TAB" => GetMessage("MAIN_TAB_SET"), "ICON" => "perfmon_settings", "TITLE" => GetMessage("MAIN_TAB_TITLE_SET")), array("DIV" => "edit2", "TAB" => GetMessage("MAIN_TAB_RIGHTS"), "ICON" => "perfmon_settings", "TITLE" => GetMessage("MAIN_TAB_TITLE_RIGHTS"))); $tabControl = new CAdminTabControl("tabControl", $aTabs); CModule::IncludeModule($module_id); if ($REQUEST_METHOD == "POST" && strlen($Update . $Apply . $RestoreDefaults) > 0 && $RIGHT == "W" && check_bitrix_sessid()) { require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/perfmon/prolog.php"; if ($_REQUEST["clear_data"] === "y") { CPerfomanceComponent::Clear(); CPerfomanceSQL::Clear(); CPerfomanceHit::Clear(); CPerfomanceError::Clear(); CPerfomanceCache::Clear(); } if (array_key_exists("ACTIVE", $_REQUEST)) { $ACTIVE = intval($_REQUEST["ACTIVE"]); CPerfomanceKeeper::SetActive($ACTIVE > 0, time() + $ACTIVE); } if (strlen($RestoreDefaults) > 0) { COption::RemoveOption("perfmon"); } else { foreach ($arAllOptions as $arOption) { $name = $arOption[0]; $val = $_REQUEST[$name]; if ($arOption[2][0] == "checkbox" && $val != "Y") { $val = "N";
function getDataSource($arOrder, $arFilter, $arSelect) { return CPerfomanceHit::GetList($arOrder, $arFilter, false, array("nPageSize" => CAdminResult::GetNavSize($this->sTableID)), $arSelect); }
} $arHeaders = array(array("id" => "IS_ADMIN", "content" => GetMessage("PERFMON_HIT_IS_ADMIN"), "sort" => "IS_ADMIN"), array("id" => "REQUEST_METHOD", "content" => GetMessage("PERFMON_HIT_REQUEST_METHOD"), "sort" => "REQUEST_METHOD"), array("id" => "SERVER_NAME", "content" => GetMessage("PERFMON_HIT_SERVER_NAME"), "sort" => "SERVER_NAME"), array("id" => "SERVER_PORT", "content" => GetMessage("PERFMON_HIT_SERVER_PORT"), "sort" => "SERVER_PORT"), array("id" => "SCRIPT_NAME", "content" => GetMessage("PERFMON_HIT_PAGE"), "sort" => "SCRIPT_NAME", "default" => true), array("id" => "PERCENT", "content" => GetMessage("PERFMON_HIT_PERCENT"), "sort" => "SUM_PAGE_TIME", "align" => "right", "default" => true), array("id" => "REQUEST_URI", "content" => GetMessage("PERFMON_HIT_REQUEST_URI"), "sort" => "REQUEST_URI"), array("id" => "COUNT", "content" => GetMessage("PERFMON_HIT_COUNT"), "sort" => "COUNT", "align" => "right", "default" => true)); $arGrpFuncs = array("MAX", "MIN", "SUM", "AVG"); $arGrpCols = array("INCLUDED_FILES" => 0, "MEMORY_PEAK_USAGE" => 0, "CACHE_SIZE" => 0, "CACHE_COUNT" => 0, "CACHE_COUNT_R" => 0, "CACHE_COUNT_W" => 0, "CACHE_COUNT_C" => 0, "PAGE_TIME" => 4, "PROLOG_TIME" => 4, "AGENTS_TIME" => 4, "WORK_AREA_TIME" => 4, "EPILOG_TIME" => 4, "EVENTS_TIME" => 4, "COMPONENTS" => 0, "COMPONENTS_TIME" => 4, "QUERIES" => 0, "QUERIES_TIME" => 4); $arDefColumns = array("SUM_PAGE_TIME", "AVG_PAGE_TIME", "AVG_COMPONENTS", "AVG_QUERIES"); foreach ($arGrpCols as $col => $prec) { foreach ($arGrpFuncs as $func) { $arHeaders[] = array("id" => $func . "_" . $col, "content" => GetMessage("PERFMON_HIT_" . $func . "_" . $col), "sort" => $func . "_" . $col, "align" => "right", "default" => in_array($func . "_" . $col, $arDefColumns)); } } $lAdmin->AddHeaders($arHeaders); $arSelectedFields = $lAdmin->GetVisibleHeaderColumns(); if (!is_array($arSelectedFields) || count($arSelectedFields) < 1) { $arSelectedFields = array("SCRIPT_NAME", "COUNT", "MAX_INCLUDED_FILES", "MAX_MEMORY_PEAK_USAGE", "AVG_QUERIES"); } $cData = new CPerfomanceHit(); $rsTotal = $cData->GetList(array("COUNT" => "ASC"), $arFilter, true, false, array("COUNT", "SUM_PAGE_TIME")); $arTotal = $rsTotal->Fetch(); $rsData = $cData->GetList(array($by => $order), $arFilter, true, false, $arSelectedFields); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("PERFMON_HIT_PAGE2"))); $max_display_url = COption::GetOptionInt("perfmon", "max_display_url"); while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_NAME, $arRes); $row->AddViewField("SCRIPT_NAME", '<a href="perfmon_hit_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_script_name=' . $f_SCRIPT_NAME . '">' . $f_SCRIPT_NAME . '</a>'); $page_time = doubleval($arTotal["SUM_PAGE_TIME"]); if ($page_time > 0) { $row->AddViewField("PERCENT", str_replace(" ", " ", number_format($arRes["SUM_PAGE_TIME"] / $page_time * 100, 2, ".", " ")) . "%"); } else { $row->AddViewField("PERCENT", " ");
</td> <td width="20%" align="center"><?php echo GetMessage("PERFMON_PANEL_DEV_PERCENT"); ?> </td> <td width="20%" align="center"><?php echo GetMessage("PERFMON_PANEL_DEV_COUNT"); ?> </td> <td width="20%" align="center"><?php echo GetMessage("PERFMON_PANEL_DEV_AVG_PAGE_TIME"); ?> </td> </tr> <?php $cData = new CPerfomanceHit(); $rsData = $cData->GetList(array("SUM_PAGE_TIME" => "DESC"), array("=IS_ADMIN" => "N"), true, false, array("SCRIPT_NAME", "COUNT", "SUM_PAGE_TIME", "AVG_PAGE_TIME")); $i = 20; while (($ar = $rsData->Fetch()) && $i > 0) { $ar["PERCENT"] = $ar["SUM_PAGE_TIME"] / $arTotalPage["SUM_PAGE_TIME"] * 100; $i--; ?> <tr> <td><a href="perfmon_hit_list.php?lang=<?php echo LANGUAGE_ID; ?> &set_filter=Y&find_script_name=<?php echo urlencode(htmlspecialcharsbx($ar["SCRIPT_NAME"])); ?> "><?php echo $ar["SCRIPT_NAME"];
} $lAdmin->AddHeaders($arHeaders); $arSelectedFields = $lAdmin->GetVisibleHeaderColumns(); if (!is_array($arSelectedFields) || (count($arSelectedFields) < 1)) $arSelectedFields = array( "SCRIPT_NAME", "COUNT", "MAX_INCLUDED_FILES", "MAX_MEMORY_PEAK_USAGE", "AVG_QUERIES", ); $cData = new CPerfomanceHit; $rsTotal = $cData->GetList(array("COUNT" => "ASC"), $arFilter, true, false, array("COUNT", "SUM_PAGE_TIME")); $arTotal = $rsTotal->Fetch(); $rsData = $cData->GetList( array($by => $order), $arFilter, true, array("nPageSize" => CAdminResult::GetNavSize($sTableID)), $arSelectedFields ); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("PERFMON_HIT_PAGE2")));
foreach ($arFilter as $key => $value) { if (!$value) { unset($arFilter[$key]); } } $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("PERFMON_HIT_ID"), "sort" => "ID", "align" => "right"), array("id" => "DATE_HIT", "content" => GetMessage("PERFMON_HIT_DATE_HIT"), "sort" => "DATE_HIT", "align" => "right"), array("id" => "IS_ADMIN", "content" => GetMessage("PERFMON_HIT_IS_ADMIN"), "sort" => "IS_ADMIN"), array("id" => "REQUEST_METHOD", "content" => GetMessage("PERFMON_HIT_REQUEST_METHOD"), "sort" => "REQUEST_METHOD"), array("id" => "SERVER_NAME", "content" => GetMessage("PERFMON_HIT_SERVER_NAME"), "sort" => "SERVER_NAME"), array("id" => "SERVER_PORT", "content" => GetMessage("PERFMON_HIT_SERVER_PORT"), "sort" => "SERVER_PORT"), array("id" => "SCRIPT_NAME", "content" => GetMessage("PERFMON_HIT_SCRIPT_NAME"), "sort" => "SCRIPT_NAME"), array("id" => "REQUEST_URI", "content" => GetMessage("PERFMON_HIT_REQUEST_URI2"), "sort" => "REQUEST_URI", "default" => true), array("id" => "PAGE_TIME", "content" => GetMessage("PERFMON_HIT_PAGE_TIME"), "sort" => "PAGE_TIME", "align" => "right", "default" => true), array("id" => "COMPONENTS", "content" => GetMessage("PERFMON_HIT_COMPONENTS"), "sort" => "COMPONENTS", "align" => "right", "default" => true), array("id" => "COMPONENTS_TIME", "content" => GetMessage("PERFMON_HIT_COMPONENTS_TIME"), "sort" => "COMPONENTS_TIME", "align" => "right", "default" => true), array("id" => "INCLUDED_FILES", "content" => GetMessage("PERFMON_HIT_INCLUDED_FILES"), "sort" => "INCLUDED_FILES", "align" => "right"), array("id" => "MEMORY_PEAK_USAGE", "content" => GetMessage("PERFMON_HIT_MEMORY_PEAK_USAGE"), "sort" => "MEMORY_PEAK_USAGE", "align" => "right"), array("id" => "CACHE_SIZE", "content" => GetMessage("PERFMON_HIT_CACHE_SIZE"), "sort" => "CACHE_SIZE", "align" => "right"), array("id" => "QUERIES", "content" => GetMessage("PERFMON_HIT_QUERIES"), "sort" => "QUERIES", "align" => "right", "default" => true), array("id" => "QUERIES_TIME", "content" => GetMessage("PERFMON_HIT_QUERIES_TIME"), "sort" => "QUERIES_TIME", "align" => "right", "default" => true), array("id" => "PROLOG_TIME", "content" => GetMessage("PERFMON_HIT_PROLOG_TIME"), "sort" => "PROLOG_TIME", "align" => "right"), array("id" => "AGENTS_TIME", "content" => GetMessage("PERFMON_HIT_AGENTS_TIME"), "sort" => "AGENTS_TIME", "align" => "right"), array("id" => "WORK_AREA_TIME", "content" => GetMessage("PERFMON_HIT_WORK_AREA_TIME"), "sort" => "WORK_AREA_TIME", "align" => "right"), array("id" => "EPILOG_TIME", "content" => GetMessage("PERFMON_HIT_EPILOG_TIME"), "sort" => "EPILOG_TIME", "align" => "right"), array("id" => "EVENTS_TIME", "content" => GetMessage("PERFMON_HIT_EVENTS_TIME"), "sort" => "EVENTS_TIME", "align" => "right"))); $arSelectedFields = $lAdmin->GetVisibleHeaderColumns(); if (!is_array($arSelectedFields) || count($arSelectedFields) < 1) { $arSelectedFields = array("ID", "DATE_HIT", "REQUEST_URI", "INCLUDED_FILES", "MEMORY_PEAK_USAGE", "QUERIES"); } $arSelectedFields[] = "ID"; $arSelectedFields[] = "SQL_LOG"; $arSelectedFields[] = "SERVER_NAME"; $arSelectedFields[] = "SERVER_PORT"; $arNumCols = array("INCLUDED_FILES" => 0, "MEMORY_PEAK_USAGE" => 0, "CACHE_SIZE" => 0, "QUERIES_TIME" => 4, "PAGE_TIME" => 4, "PROLOG_TIME" => 4, "AGENTS_TIME" => 4, "WORK_AREA_TIME" => 4, "EPILOG_TIME" => 4, "EVENTS_TIME" => 4, "COMPONENTS_TIME" => 4); $cData = new CPerfomanceHit(); $rsData = $cData->GetList(array($by => $order), $arFilter, false, false, $arSelectedFields); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("PERFMON_HIT_PAGE"))); $max_display_url = COption::GetOptionInt("perfmon", "max_display_url"); while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_NAME, $arRes); $row->AddViewField("IS_ADMIN", $f_IS_ADMIN == "Y" ? GetMessage("MAIN_YES") : GetMessage("MAIN_NO")); $row->AddViewField("DATE_HIT", str_replace(" ", " ", $f_FULL_DATE_HIT)); foreach ($arNumCols as $column_name => $precision) { if ($_REQUEST["mode"] == "excel") { $row->AddViewField($column_name, number_format($arRes[$column_name], $precision, ".", "")); } else { $row->AddViewField($column_name, str_replace(" ", " ", number_format($arRes[$column_name], $precision, ".", " "))); }