Пример #1
0
 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
             if (!array_key_exists($sql_md5, $sql_cache)) {
                 $sql_cache[$sql_md5] = true;
                 $rsInd = CPerfomanceIndexSuggest::GetList(array("SQL_MD5"), array("=SQL_MD5" => $sql_md5), array());
                 if ($rsInd->Fetch()) {
                     CPerfomanceIndexSuggest::UpdateStat($sql_md5, 1, $arSQL["QUERY_TIME"], $arSQL["ID"]);
                 } else {
                     $arMissedKeys = array();
                     $q = new CPerfQuery();
                     $strSQL = $q->transform2select($arSQL["SQL_TEXT"]);
                     if ($strSQL && $q->parse($strSQL)) {
                         $i = 0;
                         $arExplain = array();
                         $rsData = $DB->Query("explain " . $strSQL, true);
                         if (is_object($rsData)) {