Пример #1
0
/** @global CUser $USER */
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/perfmon/include.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/perfmon/prolog.php";
IncludeModuleLangFile(__FILE__);
$RIGHT = $APPLICATION->GetGroupRight("perfmon");
if ($RIGHT == "D" || $DB->type !== "MYSQL") {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
$sTableID = "tbl_perfmon_index_list";
$oSort = new CAdminSorting($sTableID, "TABLE_NAME", "asc");
$lAdmin = new CAdminList($sTableID, $oSort);
$go = false;
if ($lAdmin->GroupAction()) {
    switch ($_REQUEST['action']) {
        case "analyze_start":
            CPerfomanceIndexSuggest::Clear();
            $last_id = 0;
            $go = true;
            $_SESSION["queries"] = 0;
            break;
        case "analyze_cont":
            $etime = time() + 5;
            $last_id = intval($_REQUEST["last_id"]);
            $sql_cache = array();
            while (time() < $etime) {
                $rsSQL = CPerfomanceSQL::GetList(array("ID", "SQL_TEXT", "QUERY_TIME"), array(">ID" => $last_id), array("ID" => "ASC"), false, array("nTopCount" => 100));
                while ($arSQL = $rsSQL->Fetch()) {
                    $_SESSION["queries"]++;
                    $go = true;
                    $sql_md5 = md5(CPerfQuery::remove_literals($arSQL["SQL_TEXT"]));
                    //Check if did it already on previous steps