0 && check_bitrix_sessid() && $APPLICATION->GetGroupRight("perfmon") >= "W" ) { $sec_per_page = number_format(array_sum($_SESSION["PERFMON_TIMES"])/doubleval(count($_SESSION["PERFMON_TIMES"])), 4, ".", " "); COption::SetOptionString("perfmon", "mark_php_page_time", $sec_per_page); $result = number_format(doubleval(count($_SESSION["PERFMON_TIMES"]))/array_sum($_SESSION["PERFMON_TIMES"]), 2, ".", " "); COption::SetOptionString("perfmon", "mark_php_page_rate", $result); COption::SetOptionString("perfmon", "mark_php_page_date", ConvertTimeStamp(false, "FULL")); if (CModule::IncludeModule('perfmon')) { $ACCELERATOR_ENABLED = "N"; foreach(CPerfomanceMeasure::GetAllAccelerators() as $accel) { if ($accel->IsWorking()) { $ACCELERATOR_ENABLED = "Y"; } } CPerfomanceHistory::Add($a=array( "TOTAL_MARK" => round(doubleval(count($_SESSION["PERFMON_TIMES"]))/array_sum($_SESSION["PERFMON_TIMES"]), 2), "ACCELERATOR_ENABLED" => $ACCELERATOR_ENABLED, )); } ?>GetGroupRight("perfmon") >= "W" && CModule::IncludeModule('perfmon') ) { $threads_step = intval($_GET["threads_step"]); if($threads_step <= 0) $threads_step = 0; $threads_from = intval($_GET["threads_from"]); if($threads_from <= 0) $threads_from = 1; $threads_to = intval($_GET["threads_to"]); if($threads_to < $threads_from) $threads_to = $threads_from + $threads_step; $threads_duration = intval($_GET["threads_duration"]); if($threads_duration <= 0) $threads_duration = 10; $match = array(); if( preg_match("/^http:\\/\\/([0-9a-zA-Z-_.]+)\\/?\$/", $_GET["server_name"], $match) || preg_match("/^([0-9a-zA-Z-_.]+)\\/?\$/", $_GET["server_name"], $match) ) { $server_name = $match[1]; $server_port = 80; } elseif( preg_match("/^https:\\/\\/([0-9a-zA-Z-_.]+)\\/?\$/", $_GET["server_name"], $match) ) { $server_name = $match[1]; $server_port = 443; } elseif( preg_match("/^([0-9a-zA-Z-_.]+):(\\d+)\\/?\$/", $_GET["server_name"], $match) ) { $server_name = $match[1]; $server_port = $match[2]; } else { ShowError(GetMessage("PERFMON_PANEL_WRONG_SERVER_NAME")); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php"); die(); } if($_GET["server_url"] <> '') $server_url = $_GET["server_url"]; else $server_url = '/bitrix/admin/perfmon_panel.php?test=Y&show_page_exec_time=Y&show_sql_stat=N'; if(mb_strpos($server_url, "show_page_exec_time=Y") === false) { if(mb_strpos($server_url, "?") === false) $server_url .= "?"; $server_url .= '&show_page_exec_time=Y&show_sql_stat=N'; } $bFinish = false; $threads = intval($_GET["threads"]); if($threads == 0) { //First clear old data $ob = new CPerfCluster; $ob->Truncate(); //Timemark $_SESSION["treads_test_end"] = time() + $threads_duration*60; //Save options COption::SetOptionInt("perfmon", "test_threads_from", $threads_from); COption::SetOptionInt("perfmon", "test_threads_to", $threads_to); COption::SetOptionInt("perfmon", "test_threads_step", $threads_step); COption::SetOptionString("perfmon", "test_server_name", $_GET["server_name"]); COption::SetOptionString("perfmon", "test_server_url", $_GET["server_url"]); COption::SetOptionInt("perfmon", "test_threads_duration", $threads_duration); ?> $_SESSION["treads_test_end"]) //Finished { ?>Measure( $server_name, $server_port, $server_url, $threads ); $threads = $threads + $threads_step; if($threads > $threads_to) $threads = $threads_to; ?>
  GetList(array("ID" => "ASC")); while($ar = $rsData->Fetch()): $i++; ?>
GetGroupRight("perfmon") >= "W" ) { if( isset($_SESSION["PERFMON_SESSION_START"]) && is_array($_SESSION["PERFMON_SESSION_START"]) && count($_SESSION["PERFMON_SESSION_START"]) > 0 ) { $result = number_format(array_sum($_SESSION["PERFMON_SESSION_START"])/doubleval(count($_SESSION["PERFMON_SESSION_START"])), 4, ".", " "); COption::SetOptionString("perfmon", "mark_php_session_time_value", $result); ?>GetGroupRight("perfmon") >= "W") { switch($_REQUEST["test"]) { case "cpu": COption::SetOptionString("perfmon", "mark_php_cpu_value", number_format(CPerfomanceMeasure::GetPHPCPUMark(), 1, ".", " ")); echo COption::GetOptionString("perfmon", "mark_php_cpu_value"); break; case "files": COption::SetOptionString("perfmon", "mark_php_files_value", number_format(CPerfomanceMeasure::GetPHPFilesMark(), 1, ".", " ")); echo COption::GetOptionString("perfmon", "mark_php_files_value"); break; case "mail": COption::SetOptionString("perfmon", "mark_php_mail_value", number_format(CPerfomanceMeasure::GetPHPMailMark(), 4, ".", " ")); echo COption::GetOptionString("perfmon", "mark_php_mail_value"); break; case "db_insert": COption::SetOptionString("perfmon", "mark_db_insert_value", number_format(CPerfomanceMeasure::GetDBMark("insert"), 0, ".", " ")); echo COption::GetOptionString("perfmon", "mark_db_insert_value"); break; case "db_read": COption::SetOptionString("perfmon", "mark_db_read_value", number_format(CPerfomanceMeasure::GetDBMark("read"), 0, ".", " ")); echo COption::GetOptionString("perfmon", "mark_db_read_value"); break; case "db_update": COption::SetOptionString("perfmon", "mark_db_update_value", number_format(CPerfomanceMeasure::GetDBMark("update"), 0, ".", " ")); echo COption::GetOptionString("perfmon", "mark_db_update_value"); break; case "php": $bPHPIsGood = version_compare(phpversion(), "5.1.0", ">="); if($bPHPIsGood) { if(ini_get('open_basedir') <> '') { $bPHPIsGood = false; } } if($bPHPIsGood) { $size = CPerfAccel::unformat(ini_get('realpath_cache_size')); if($size < 4*1024*1024) $bPHPIsGood = false; } if($bPHPIsGood) { $bPHPIsGood = false; foreach(CPerfomanceMeasure::GetAllAccelerators() as $accel) { if ($accel->IsWorking()) { $bPHPIsGood = true; } } } if($bPHPIsGood) { echo GetMessage("PERFMON_PANEL_MARK_PHP_IS_GOOD"); COption::SetOptionString("perfmon", "mark_php_is_good", "Y"); } else { echo "".GetMessage("PERFMON_PANEL_MARK_PHP_IS_NO_GOOD").""; COption::SetOptionString("perfmon", "mark_php_is_good", "N"); } break; case "monitor": if($duration > 0) { CPerfomanceKeeper::SetActive($duration > 0, time() + $duration); } elseif($action == "stop") { CPerfomanceKeeper::SetActive(false); } if(CPerfomanceKeeper::IsActive()) { $end_time = COption::GetOptionInt("perfmon", "end_time"); if(time() > $end_time) { CPerfomanceKeeper::SetActive(false); if(COption::GetOptionString("perfmon", "total_mark_value", "") == "measure") COption::SetOptionString("perfmon", "total_mark_value", "calc"); } } $cData = new CPerfomanceHit; $rsData = $cData->GetList(array("IS_ADMIN" => "DESC"), array("=IS_ADMIN" => "N"), true, false, array("IS_ADMIN", "COUNT", "SUM_PAGE_TIME", "AVG_PAGE_TIME")); $arTotalPage = $rsData->Fetch(); if(($action == "stop") || (COption::GetOptionString("perfmon", "total_mark_value") == "calc")) { if($arTotalPage["AVG_PAGE_TIME"] > 0) COption::SetOptionString("perfmon", "total_mark_value", number_format(1/$arTotalPage["AVG_PAGE_TIME"], 2)); else COption::SetOptionString("perfmon", "total_mark_value", "N/A"); COption::SetOptionString("perfmon", "total_mark_hits", intval($arTotalPage["COUNT"])); COption::SetOptionString("perfmon", "total_mark_time", ConvertTimeStamp(false, "FULL")); } if(CPerfomanceKeeper::IsActive() || $duration > 0): $interval = COption::GetOptionInt("perfmon", "end_time") - time(); if($interval < 0) $interval = 0; $hours = intval($interval / 3600); $interval -= $hours * 3600; $minutes = intval($interval / 60); $interval -= $minutes * 60; $seconds = intval($interval); echo GetMessage("PERFMON_PANEL_MINUTES", array("#HOURS#" => $hours, "#MINUTES#" => $minutes, "#SECONDS#" => $seconds));?>
intval($arTotalPage["COUNT"])));?>
" OnClick="javascript:StopTest()"> 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--; ?> '; else: $err_count = 0; $sHint = ""; endif; $arComps = array(); if($ar["COUNT"] > 1) { $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 .= ''; } $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 .= ''; ?>  
2"?>
"> "DESC"), array( '=SCRIPT_NAME' => $ar["SCRIPT_NAME"], '=IS_ADMIN' => 'N', '=CACHE_TYPE' => 'Y', '>MENU_RECALC' => 0, ), true, array(), array('COUNT')); if(($arHit = $rsHit->Fetch()) && ($arHit["COUNT"] >= $ar["COUNT"])): $err_count = 1; $sHint = '
'.GetMessage("PERFMON_PANEL_DEV_WARN1").' '.GetMessage("PERFMON_PANEL_DEV_WARN1_DESC").'
'.GetMessage("PERFMON_PANEL_DEV_WARN2").' '.GetMessage("PERFMON_PANEL_DEV_WARN2_DESC").'
'.GetMessage("PERFMON_PANEL_DEV_WARN3").' '.GetMessage("PERFMON_PANEL_DEV_WARN3_DESC").'
%

GetGroupRight("perfmon"); if($RIGHT < "R") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); $mark_value = COption::GetOptionString("perfmon", "mark_php_page_rate", ""); $mark_date = COption::GetOptionString("perfmon", "mark_php_page_date", ""); if($REQUEST_METHOD == "POST" && ($calc.$total_calc!="") && $RIGHT >= "W" && check_bitrix_sessid()) { COption::RemoveOption("perfmon", "mark_php_cpu_value"); COption::RemoveOption("perfmon", "mark_php_files_value"); COption::RemoveOption("perfmon", "mark_php_mail_value"); COption::RemoveOption("perfmon", "mark_php_session_time_value"); COption::RemoveOption("perfmon", "mark_php_is_good"); COption::RemoveOption("perfmon", "mark_db_insert_value"); COption::RemoveOption("perfmon", "mark_db_read_value"); COption::RemoveOption("perfmon", "mark_db_update_value"); if($total_calc <> '') { CPerfomanceComponent::Clear(); CPerfomanceSQL::Clear(); CPerfomanceHit::Clear(); CPerfomanceError::Clear(); CPerfomanceCache::Clear(); COption::SetOptionString("perfmon", "total_mark_value", "measure"); COption::SetOptionInt("perfmon", "total_mark_duration", $total_duration); COption::RemoveOption("perfmon", "total_mark_hits"); COption::RemoveOption("perfmon", "total_mark_time"); } COption::SetOptionString("perfmon", "mark_php_page_rate", "measure"); COption::SetOptionString("perfmon", "mark_php_page_time", "measure"); $_SESSION["PERFMON_TIMES"] = array(); $_SESSION["PERFMON_SESSION_START"] = array(); LocalRedirect("perfmon_panel.php?lang=".LANGUAGE_ID); } $bComponentCache = COption::GetOptionString("main", "component_cache_on", "Y")=="Y"; $arModulesInstalled = array(); $rsModules = CModule::GetDropDownList(); while($arModule = $rsModules->Fetch()) { $arModulesInstalled[] = $arModule["REFERENCE_ID"]; } $statistic_path = IsModuleInstalled('statistic') && (COption::GetOptionString("statistic", "SAVE_PATH_DATA") == "Y"); $search_is_ok = IsModuleInstalled('search') && (COption::GetOptionString("search", "use_stemming")=="Y") && (COption::GetOptionString("search", "use_tf_cache")=="Y"); if(CModule::IncludeModule('advertising') && COption::GetOptionString('advertising', 'DONT_FIX_BANNER_SHOWS')!=="Y") { $rsBanners = CAdvBanner::GetList('', '', array("FIX_SHOW" => "Y"), null, "N"); if($rsBanners->Fetch()) $adv_banners_fix_shows = true; else $adv_banners_fix_shows = false; } else { $adv_banners_fix_shows = false; } $arConstants = array( "CACHED_b_forum_filter", "CACHED_b_forum2site", "CACHED_b_forum_perms", "CACHED_b_forum_smile", "CACHED_b_forum_user", "CACHED_b_forum_group", "CACHED_b_forum", "CACHED_b_iblock_property_enum", "CACHED_b_iblock_type", "CACHED_b_iblock", "CACHED_b_lang", "CACHED_b_option", "CACHED_b_lang_domain", "CACHED_b_site_template", "CACHED_b_event", "CACHED_b_agent", "CACHED_b_user_field", "CACHED_b_task", "CACHED_b_task_operation", "CACHED_b_search_tags", "CACHED_b_search_tags_len", "CACHED_b_sec_iprule", "CACHED_b_sec_filter_mask", "CACHED_b_sec_redirect_url", "CACHED_b_sonet_group_subjects", "CACHED_b_vote_question", ); foreach($arConstants as $i => $constant) { if(!defined($constant)) unset($arConstants[$i]); elseif(constant($constant)!==false) unset($arConstants[$i]); } $bManagedCache = count($arConstants) <= 0; $arEncodedModules = array(); foreach($arModulesInstalled as $module_id) { $file_name = $_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/".$module_id."/include.php"; if(file_exists($file_name) && is_file($file_name)) { $fp = fopen($file_name, "rb"); $sign = fread($fp, 4); if($sign == "Zend") $arEncodedModules[] = $module_id; fclose($fp); } } $bEncodedModules = count($arEncodedModules) <= 0; if($DB->type == "MYSQL") { $db_last_optimize = COption::GetOptionInt("main", "LAST_DB_OPTIMIZATION_TIME", 0); $bOptimized = $db_last_optimize >= (time() - 31*24*3600); } else { $bOptimized = true; } $bOptimal = $bComponentCache && $bManagedCache && $bEncodedModules && $bOptimized ; if($bOptimal) { if(COption::GetOptionString("perfmon", "bitrix_optimal", "-") !== "Y") COption::SetOptionString("perfmon", "bitrix_optimal", "Y"); } else { if(COption::GetOptionString("perfmon", "bitrix_optimal", "-") !== "N") COption::SetOptionString("perfmon", "bitrix_optimal", "N"); } $cData = new CPerfomanceHit; $rsData = $cData->GetList(array("IS_ADMIN" => "DESC"), array("=IS_ADMIN" => "N"), true, false, array("IS_ADMIN", "COUNT", "SUM_PAGE_TIME", "AVG_PAGE_TIME")); $arTotalPage = $rsData->Fetch(); if(COption::GetOptionString("perfmon", "total_mark_value") == "calc" && $arTotalPage) { COption::SetOptionString("perfmon", "total_mark_value", number_format(1/$arTotalPage["AVG_PAGE_TIME"], 2)); COption::SetOptionString("perfmon", "total_mark_hits", intval($arTotalPage["COUNT"])); COption::SetOptionString("perfmon", "total_mark_time", ConvertTimeStamp(false, "FULL")); } $APPLICATION->SetTitle(GetMessage("PERFMON_PANEL_TITLE")); $aTabs = array( array( "DIV" => "perfomance", "TAB" => GetMessage("PERFMON_PANEL_PERF_NAME").( mb_strlen($mark_value) && $mark_value != "measure"? " (".$mark_value.")": "" ), "ICON" => "main_user_edit", "TITLE" => ( mb_strlen($mark_value) && $mark_value != "measure"? GetMessage("PERFMON_PANEL_PERF_TITLE2", array("#TOTAL_MARK_DATE#" => $mark_date, "#TOTAL_MARK_VALUE#" => $mark_value)): GetMessage("PERFMON_PANEL_PERF_TITLE1") ), ), array( "DIV" => "bitrix", "TAB" => GetMessage("PERFMON_PANEL_BITRIX_NAME").( COption::GetOptionString("perfmon", "bitrix_optimal", "-") === "Y"? " (".GetMessage("PERFMON_PANEL_MARK_PHP_IS_GOOD").")": " (".GetMessage("PERFMON_PANEL_MARK_PHP_IS_NO_GOOD").")" ), "ICON" => "main_user_edit", "TITLE" => GetMessage("PERFMON_PANEL_BITRIX_TITLE"), ), array( "DIV" => "dev", "TAB" => GetMessage("PERFMON_PANEL_DEV_NAME").( COption::GetOptionString("perfmon", "total_mark_time", "") <> ''? " (".COption::GetOptionString("perfmon", "total_mark_value").")": "" ), "ICON" => "main_user_edit", "TITLE" => ( COption::GetOptionString("perfmon", "total_mark_time", "") <> ''? GetMessage("PERFMON_PANEL_DEV_TITLE2", array( "#mark_value#" => COption::GetOptionString("perfmon", "total_mark_value"), "#hits#" => COption::GetOptionString("perfmon", "total_mark_hits"), "#duration#" => COption::GetOptionString("perfmon", "total_mark_duration"), "#mark_time#" => COption::GetOptionString("perfmon", "total_mark_time"), )): GetMessage("PERFMON_PANEL_DEV_TITLE1") ), ), array( "DIV" => "cluster", "TAB" => GetMessage("PERFMON_PANEL_CLUSTER_TAB"), "ICON" => "main_user_edit", "TITLE" => GetMessage("PERFMON_PANEL_CLUSTER_TAB_TITLE"), ), ); $tabControl = new CAdminTabControl("tabControl", $aTabs, true, true); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); ?>

$mark_value))."1"; ?>

" >  

Begin();?> BeginNextTab();?> ''):?> ''):?> ''):?> ''):?> ''):?> ''):?> ''):?> type == "MYSQL") $db_type = "MySQL"; elseif($DB->type == "ORACLE") $db_type = "Oracle"; else $db_type = "MS SQL"; $mark_value = COption::GetOptionString("perfmon", "mark_db_insert_value", ""); ?> ''):?> ''):?> ''):?>
30  
0.0330
9.0
10 000
0.0100
0.0002
".GetMessage("PERFMON_PANEL_MARK_PHP_IS_NO_GOOD")."": GetMessage("PERFMON_PANEL_MARK_PHP_IS_GOOD"))?>
$db_type))?> 5 600
$db_type))?> 7 800
$db_type))?> 5 800

" class="adm-btn-save"> BeginNextTab();?> type == "MYSQL"):?>
 
">  
">  
  ">
  ( IsModuleInstalled('fileman') && ($USER->CanDoOperation('fileman_admin_files') || $USER->CanDoOperation('fileman_edit_existent_files'))? "dbconn.php": "dbconn.php" ), ));?>
 
 
BeginNextTab(); if(COption::GetOptionString("perfmon", "total_mark_value") == "measure" && CPerfomanceKeeper::IsActive()):?> $hours, "#MINUTES#" => $minutes, "#SECONDS#" => $seconds)); ?> 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--; ?> '; else: $err_count = 0; $sHint = ""; endif; $arComps = array(); if($ar["COUNT"] > 1) { $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 .= ''; } $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 .= ''; ?>  
2"?>
"> "DESC"), array( '=SCRIPT_NAME' => $ar["SCRIPT_NAME"], '=IS_ADMIN' => 'N', '=CACHE_TYPE' => 'Y', '>MENU_RECALC' => 0, ), true, array(), array('COUNT')); if(($arHit = $rsHit->Fetch()) && ($arHit["COUNT"] >= $ar["COUNT"])): $err_count = 1; $sHint = '
'.GetMessage("PERFMON_PANEL_DEV_WARN1").' '.GetMessage("PERFMON_PANEL_DEV_WARN1_DESC").'
'.GetMessage("PERFMON_PANEL_DEV_WARN2").' '.GetMessage("PERFMON_PANEL_DEV_WARN2_DESC").'
'.GetMessage("PERFMON_PANEL_DEV_WARN3").' '.GetMessage("PERFMON_PANEL_DEV_WARN3_DESC").'
%

BeginNextTab(); ?> " id="threads_from"> " id="threads_to"> " id="threads_step"> " id="server_name"> " id="server_url"> " id="threads_duration"> " onclick="ThreadsTest()">
  GetList(array("ID" => "ASC")); while($ar = $rsData->Fetch()): $i++; ?>



End();?>
" => "