Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/perfmon/admin/ |
Upload File : |
<?php use Bitrix\Main\Loader; define('ADMIN_MODULE_NAME', 'perfmon'); define('PERFMON_STOP', true); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php'; /** @var CMain $APPLICATION */ /** @var CDatabase $DB */ /** @var CUser $USER */ Loader::includeModule('perfmon'); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/perfmon/prolog.php'; IncludeModuleLangFile(__FILE__); $RIGHT = CMain::GetGroupRight('perfmon'); if ($RIGHT == 'D') { $APPLICATION->AuthForm(GetMessage('ACCESS_DENIED')); } class CPerfmonHitList extends CAdminListPage { public function getSelectedFields() { $arSelectedFields = parent::getSelectedFields(); $arSelectedFields[] = 'ID'; $arSelectedFields[] = 'SQL_LOG'; $arSelectedFields[] = 'SERVER_NAME'; $arSelectedFields[] = 'SERVER_PORT'; return $arSelectedFields; } public function getDataSource($arOrder, $arFilter, $arSelect) { return CPerfomanceHit::GetList( $arOrder, $arFilter, false, ['nPageSize' => CAdminResult::GetNavSize($this->sTableID)], $arSelect ); } public function getFooter() { return [ [ 'title' => GetMessage('MAIN_ADMIN_LIST_SELECTED'), 'value' => $this->data->SelectedRowsCount(), ], ]; } } class CPerfmonHitListColumnFullDate extends CAdminListColumn { public function getRowView($arRes) { return $arRes['FULL_DATE_HIT']; } } class CPerfmonListColumnRequestUri extends CAdminListColumn { public $max_display_url = 0; public function __construct($id, $info, $max_display_url) { parent::__construct($id, $info); $this->max_display_url = $max_display_url; } public function getRowView($arRes) { $url = str_replace( ['show_sql_stat_immediate=Y', 'show_sql_stat=Y', 'show_page_exec_time=Y', '&&'], ['', '', '', '&'], $arRes['REQUEST_URI'] ); if (mb_strpos($url, '?') === false) { $url .= '?'; } if (mb_strpos($url, '=') !== false) { $url .= '&'; } $url .= 'show_sql_stat=Y&show_page_exec_time=Y&show_sql_stat_immediate=Y'; switch ($arRes['SERVER_PORT']) { case '443': $url = 'https://' . $arRes['SERVER_NAME'] . $url; break; case '80': $url = 'http://' . $arRes['SERVER_NAME'] . $url; break; default: $url = 'http://' . $arRes['SERVER_NAME'] . ':' . $arRes['SERVER_PORT'] . $url; } return '<a href="' . htmlspecialcharsbx($url) . '" title="' . htmlspecialcharsbx($url) . '">>></a> <a href="perfmon_sql_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_id=' . urlencode($arRes['ID']) . '" title="' . urlencode($arRes['REQUEST_URI']) . '">' . (mb_strlen($arRes['REQUEST_URI']) > $this->max_display_url ? mb_substr($arRes['REQUEST_URI'], 0, $this->max_display_url) . '...' : $arRes['REQUEST_URI']) . '</a> '; } } class CPerfmonListColumnTemplate extends CAdminListColumnNumber { public $template = ''; public function __construct($id, $info, $precision, $template) { parent::__construct($id, $info, $precision); $this->template = $template; } public function getRowView($arRes) { if ($arRes[$this->id] > 0) { $this->arRes = $arRes; $this->arRes[$this->id] = parent::getRowView($arRes); return preg_replace_callback('/(#)([A-Za-z0-9_]+)(#)/', [$this, 'replace'], $this->template); } else { return false; } } public function replace($match) { return $this->arRes[$match[2]]; } } $page = new CPerfmonHitList(GetMessage('PERFMON_HIT_TITLE'), 'tbl_perfmon_hit_list', ['PAGE_TIME' => 'desc'], GetMessage('PERFMON_HIT_PAGE')); $page->addColumn(new CAdminListColumn('ID', [ 'content' => GetMessage('PERFMON_HIT_ID'), 'align' => 'right', 'sort' => 'ID', 'filter' => 'find_id', 'find_type' => 'id', 'filter_key' => '=ID', ])); $page->addColumn(new CPerfmonHitListColumnFullDate('DATE_HIT', [ 'content' => GetMessage('PERFMON_HIT_DATE_HIT'), 'align' => 'right', 'sort' => 'DATE_HIT', ])); $page->addColumn(new CAdminListColumnList( 'IS_ADMIN', [ 'content' => GetMessage('PERFMON_HIT_IS_ADMIN'), 'sort' => 'IS_ADMIN', 'filter' => 'find_is_admin', 'filter_key' => '=IS_ADMIN', ], [ 'Y' => GetMessage('MAIN_YES'), 'N' => GetMessage('MAIN_NO'), ] )); $methods = []; $rsMethods = CPerfomanceHit::GetList( ['REQUEST_METHOD' => 'ASC'], [], true, false, ['REQUEST_METHOD'] ); while ($arMethod = $rsMethods->Fetch()) { $methods[$arMethod['REQUEST_METHOD']] = $arMethod['REQUEST_METHOD']; } $page->addColumn(new CAdminListColumnList('REQUEST_METHOD', [ 'content' => GetMessage('PERFMON_HIT_REQUEST_METHOD'), 'sort' => 'REQUEST_METHOD', 'filter' => 'find_request_method', 'filter_key' => '=REQUEST_METHOD', ], $methods)); $page->addColumn(new CAdminListColumn('SERVER_NAME', [ 'content' => GetMessage('PERFMON_HIT_SERVER_NAME'), 'sort' => 'SERVER_NAME', ])); $page->addColumn(new CAdminListColumn('SERVER_PORT', [ 'content' => GetMessage('PERFMON_HIT_SERVER_PORT'), 'sort' => 'SERVER_PORT', ])); $page->addColumn(new CAdminListColumn('SCRIPT_NAME', [ 'content' => GetMessage('PERFMON_HIT_SCRIPT_NAME'), 'sort' => 'SCRIPT_NAME', 'filter' => 'find_script_name', 'find_type' => 'script_name', 'filter_key' => '=SCRIPT_NAME', ])); $page->addColumn(new CPerfmonListColumnRequestUri('REQUEST_URI', [ 'content' => GetMessage('PERFMON_HIT_REQUEST_URI2'), 'sort' => 'REQUEST_URI', 'default' => true, ], COption::GetOptionInt('perfmon', 'max_display_url'))); $page->addColumn(new CAdminListColumnNumber('PAGE_TIME', [ 'content' => GetMessage('PERFMON_HIT_PAGE_TIME'), 'sort' => 'PAGE_TIME', 'default' => true, ], 4)); $page->addColumn(new CPerfmonListColumnTemplate('COMPONENTS', [ 'content' => GetMessage('PERFMON_HIT_COMPONENTS'), 'sort' => 'COMPONENTS', 'default' => true, ], 0, '<a href="perfmon_comp_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_id=#ID#">#COMPONENTS#</a>')); $page->addColumn(new CAdminListColumnNumber('COMPONENTS_TIME', [ 'content' => GetMessage('PERFMON_HIT_COMPONENTS_TIME'), 'sort' => 'COMPONENTS_TIME', 'default' => true, ], 4)); $page->addColumn(new CAdminListColumnNumber('INCLUDED_FILES', [ 'content' => GetMessage('PERFMON_HIT_INCLUDED_FILES'), 'sort' => 'INCLUDED_FILES', ], 0)); $page->addColumn(new CAdminListColumnNumber('MEMORY_PEAK_USAGE', [ 'content' => GetMessage('PERFMON_HIT_MEMORY_PEAK_USAGE'), 'sort' => 'MEMORY_PEAK_USAGE', ], 0)); $page->addColumn(new CAdminListColumnNumber('CACHE_SIZE', [ 'content' => GetMessage('PERFMON_HIT_CACHE_SIZE'), 'sort' => 'CACHE_SIZE', ], 0)); $page->addColumn(new CPerfmonListColumnTemplate('CACHE_COUNT', [ 'content' => GetMessage('PERFMON_HIT_CACHE_COUNT'), 'sort' => 'CACHE_COUNT', ], 0, '<a href="perfmon_cache_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_id=#ID#">#CACHE_COUNT#</a>')); $page->addColumn(new CPerfmonListColumnTemplate('CACHE_COUNT_R', [ 'content' => GetMessage('PERFMON_HIT_CACHE_COUNT_R'), 'sort' => 'CACHE_COUNT_R', ], 0, '<a href="perfmon_cache_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_id=#ID#&find_op_mode=R">#CACHE_COUNT_R#</a>')); $page->addColumn(new CPerfmonListColumnTemplate('CACHE_COUNT_W', [ 'content' => GetMessage('PERFMON_HIT_CACHE_COUNT_W'), 'sort' => 'CACHE_COUNT_W', ], 0, '<a href="perfmon_cache_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_id=#ID#&find_op_mode=W">#CACHE_COUNT_W#</a>')); $page->addColumn(new CPerfmonListColumnTemplate('CACHE_COUNT_C', [ 'content' => GetMessage('PERFMON_HIT_CACHE_COUNT_C'), 'sort' => 'CACHE_COUNT_C', ], 0, '<a href="perfmon_cache_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_id=#ID#&find_op_mode=C">#CACHE_COUNT_C#</a>')); $page->addColumn(new CPerfmonListColumnTemplate('QUERIES', [ 'content' => GetMessage('PERFMON_HIT_QUERIES'), 'sort' => 'QUERIES', 'default' => true, ], 0, '<a href="perfmon_sql_list.php?lang=' . LANGUAGE_ID . '&set_filter=Y&find_hit_id=#ID#">#QUERIES#</a>')); $page->addColumn(new CAdminListColumnNumber('QUERIES_TIME', [ 'content' => GetMessage('PERFMON_HIT_QUERIES_TIME'), 'sort' => 'QUERIES_TIME', 'default' => true, ], 4)); $page->addColumn(new CAdminListColumnNumber('PROLOG_TIME', [ 'content' => GetMessage('PERFMON_HIT_PROLOG_TIME'), 'sort' => 'PROLOG_TIME', ], 4)); $page->addColumn(new CAdminListColumnNumber('AGENTS_TIME', [ 'content' => GetMessage('PERFMON_HIT_AGENTS_TIME'), 'sort' => 'AGENTS_TIME', ], 4)); $page->addColumn(new CAdminListColumnNumber('WORK_AREA_TIME', [ 'content' => GetMessage('PERFMON_HIT_WORK_AREA_TIME'), 'sort' => 'WORK_AREA_TIME', ], 4)); $page->addColumn(new CAdminListColumnNumber('EPILOG_TIME', [ 'content' => GetMessage('PERFMON_HIT_EPILOG_TIME'), 'sort' => 'EPILOG_TIME', ], 4)); $page->addColumn(new CAdminListColumnNumber('EVENTS_TIME', [ 'content' => GetMessage('PERFMON_HIT_EVENTS_TIME'), 'sort' => 'EVENTS_TIME', ], 4)); $page->show(); require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php';