<?php $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") {
foreach ($arFilter as $key => $value) { if (!$value) { unset($arFilter[$key]); } } $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("PERFMON_COMP_ID"), "sort" => "ID", "align" => "right"), array("id" => "HIT_ID", "content" => GetMessage("PERFMON_COMP_HIT_ID"), "sort" => "HIT_ID", "align" => "right"), array("id" => "NN", "content" => GetMessage("PERFMON_COMP_NN"), "sort" => "NN", "align" => "right", "default" => true), array("id" => "COMPONENT_NAME", "content" => GetMessage("PERFMON_COMP_COMPONENT_NAME"), "sort" => "COMPONENT_NAME", "default" => true), array("id" => "COMPONENT_TIME", "content" => GetMessage("PERFMON_COMP_COMPONENT_TIME"), "sort" => "COMPONENT_TIME", "align" => "right", "default" => true), array("id" => "QUERIES", "content" => GetMessage("PERFMON_COMP_QUERIES"), "sort" => "QUERIES", "align" => "right", "default" => true), array("id" => "QUERIES_TIME", "content" => GetMessage("PERFMON_COMP_QUERIES_TIME"), "sort" => "QUERIES_TIME", "align" => "right", "default" => true), array("id" => "CACHE_TYPE", "content" => GetMessage("PERFMON_COMP_CACHE_TYPE"), "sort" => "CACHE_TYPE", "align" => "right", "default" => true), array("id" => "CACHE_SIZE", "content" => GetMessage("PERFMON_COMP_CACHE_SIZE"), "sort" => "CACHE_SIZE", "align" => "right"), array("id" => "CACHE_COUNT", "content" => GetMessage("PERFMON_COMP_CACHE_COUNT"), "sort" => "CACHE_COUNT", "align" => "right"), array("id" => "CACHE_COUNT_R", "content" => GetMessage("PERFMON_COMP_CACHE_COUNT_R"), "sort" => "CACHE_COUNT_R", "align" => "right"), array("id" => "CACHE_COUNT_W", "content" => GetMessage("PERFMON_COMP_CACHE_COUNT_W"), "sort" => "CACHE_COUNT_W", "align" => "right"), array("id" => "CACHE_COUNT_C", "content" => GetMessage("PERFMON_COMP_CACHE_COUNT_C"), "sort" => "CACHE_COUNT_C", "align" => "right"))); $arSelectedFields = $lAdmin->GetVisibleHeaderColumns(); if (!is_array($arSelectedFields) || count($arSelectedFields) < 1) { $arSelectedFields = array("ID", "HIT_ID", "NN", "CACHE_TYPE", "COMPONENT_NAME", "COMPONENT_TIME", "QUERIES", "QUERIES_TIME"); } $arSelectedFields[] = "ID"; $arNumCols = array("CACHE_SIZE" => 0, "COMPONENT_TIME" => 4, "QUERIES" => 0, "QUERIES_TIME" => 4, "CACHE_COUNT" => 0, "CACHE_COUNT_R" => 0, "CACHE_COUNT_W" => 0, "CACHE_COUNT_C" => 0); if (isset($arFilter["CACHE_TYPE"]) && $arFilter["CACHE_TYPE"] == "N") { $arFilter["CACHE_TYPE"] = array(false, "N"); } $cData = new CPerfomanceComponent(); $rsData = $cData->GetList(array($by => $order), $arFilter, false, false, $arSelectedFields); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("PERFMON_COMP_PAGE"))); $max_display_url = COption::GetOptionInt("perfmon", "max_display_url"); while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_NAME, $arRes); 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, ".", " "))); } } if ($f_QUERIES > 0) {
$arNumCols = array( "CACHE_SIZE" => 0, "COMPONENT_TIME" => 4, "QUERIES" => 0, "QUERIES_TIME" => 4, "CACHE_COUNT" => 0, "CACHE_COUNT_R" => 0, "CACHE_COUNT_W" => 0, "CACHE_COUNT_C" => 0, ); if (isset($arFilter["CACHE_TYPE"]) && $arFilter["CACHE_TYPE"] == "N") $arFilter["CACHE_TYPE"] = array(false, "N"); $cData = new CPerfomanceComponent; $rsData = $cData->GetList( array($by => $order), $arFilter, false, array("nPageSize" => CAdminResult::GetNavSize($sTableID)), $arSelectedFields ); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("PERFMON_COMP_PAGE"))); $max_display_url = COption::GetOptionInt("perfmon", "max_display_url"); while ($arRes = $rsData->NavNext(true, "f_")) {
$rsHit = CPerfomanceComponent::GetList(array("COUNT" => "DESC"), array('=HIT_SCRIPT_NAME' => $ar["SCRIPT_NAME"], '=HIT_IS_ADMIN' => 'N', '=HIT_CACHE_TYPE' => 'Y', '>QUERIES' => 0), true, array(), array('COMPONENT_NAME', 'COUNT')); while ($arHit = $rsHit->Fetch()) { if ($arHit["COUNT"] >= $ar["COUNT"]) { $arComps[] = htmlspecialcharsbx($arHit["COMPONENT_NAME"]); } } } if (count($arComps)) { $err_count++; $sHint .= '<tr><td nowrap><b>' . GetMessage("PERFMON_PANEL_DEV_WARN2") . ' ' . GetMessage("PERFMON_PANEL_DEV_WARN2_DESC") . '</b> <ul style="font-size:100%">'; foreach ($arComps as $component_name) { $sHint .= '<li><a href="perfmon_comp_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_script_name=' . urlencode(htmlspecialcharsbx($ar["SCRIPT_NAME"])) . '&find_component_name=' . urlencode($component_name) . '">' . $component_name . '</a></li>'; } $sHint .= '</ul></td></tr>'; } $rsHit = CPerfomanceComponent::GetList(array("COUNT" => "DESC"), array('=HIT_SCRIPT_NAME' => $ar["SCRIPT_NAME"], '=HIT_IS_ADMIN' => 'N', '=HIT_CACHE_TYPE' => 'Y', '>CACHE_SIZE' => 1024 * 1024), true, array(), array('COMPONENT_NAME', 'MAX_CACHE_SIZE')); $bFirst = true; while ($arHit = $rsHit->Fetch()) { if ($bFirst) { $err_count++; $sHint .= '<tr><td nowrap><b>' . GetMessage("PERFMON_PANEL_DEV_WARN3") . '</b> ' . GetMessage("PERFMON_PANEL_DEV_WARN3_DESC") . '<ul style="font-size:100%">'; $bFirst = false; } $sHint .= '<li>' . CFile::FormatSize($arHit["MAX_CACHE_SIZE"], 0) . ' <a href="perfmon_comp_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_script_name=' . urlencode(htmlspecialcharsbx($ar["SCRIPT_NAME"])) . '&find_component_name=' . urlencode(htmlspecialcharsbx($arHit["COMPONENT_NAME"])) . '">' . htmlspecialcharsbx($arHit["COMPONENT_NAME"]) . '</a></li>'; } if (!$bFirst) { $sHint .= '</ul></td></tr>'; } ?> <?php if ($err_count) {