- Модуль: perfmon
- Путь к файлу: ~/bitrix/modules/perfmon/classes/general/cluster.php
- Класс: CPerfCluster
- Вызов: CPerfCluster::GetList
static function GetList($arOrder = false, $arFilter = false, $arSelect = false)
{
global $DB;
if (!is_array($arSelect))
$arSelect = array();
if (count($arSelect) < 1)
$arSelect = array(
"ID",
"TIMESTAMP_X",
"THREADS",
"HITS",
"ERRORS",
"PAGES_PER_SECOND",
"PAGE_EXEC_TIME",
"PAGE_RESP_TIME",
);
if (!is_array($arOrder))
$arOrder = array();
$arQueryOrder = array();
foreach ($arOrder as $strColumn => $strDirection)
{
$strColumn = mb_strtoupper($strColumn);
$strDirection = mb_strtoupper($strDirection) == "ASC"? "ASC": "DESC";
switch ($strColumn)
{
case "ID":
$arSelect[] = $strColumn;
$arQueryOrder[$strColumn] = $strColumn." ".$strDirection;
break;
}
}
$arQuerySelect = array();
foreach ($arSelect as $strColumn)
{
$strColumn = mb_strtoupper($strColumn);
switch ($strColumn)
{
case "ID":
case "TIMESTAMP_X":
case "THREADS":
case "HITS":
case "ERRORS":
case "PAGES_PER_SECOND":
case "PAGE_EXEC_TIME":
case "PAGE_RESP_TIME":
$arQuerySelect[$strColumn] = "p.".$strColumn;
break;
}
}
if (count($arQuerySelect) < 1)
$arQuerySelect = array("ID" => "p.ID");
$obQueryWhere = new CSQLWhere;
$arFields = array(
"ID" => array(
"TABLE_ALIAS" => "p",
"FIELD_NAME" => "p.ID",
"FIELD_TYPE" => "int",
"JOIN" => false,
),
);
$obQueryWhere->SetFields($arFields);
if (!is_array($arFilter))
$arFilter = array();
$strQueryWhere = $obQueryWhere->GetQuery($arFilter);
$bDistinct = $obQueryWhere->bDistinctReqired;
$strSql = "
SELECT ".($bDistinct? "DISTINCT": "")."
".implode(", ", $arQuerySelect)."
FROM
b_perf_cluster p
".$obQueryWhere->GetJoins()."
";
if ($strQueryWhere)
{
$strSql .= "
WHERE
".$strQueryWhere."
";
}
if (count($arQueryOrder) > 0)
{
$strSql .= "
ORDER BY
".implode(", ", $arQueryOrder)."
";
}
return $DB->Query($strSql, false, '', array('fixed_connection' => true));
}