Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/cluster/admin/ |
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/cluster/admin/cluster_redis_list.php |
<?php require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/cluster/prolog.php"); IncludeModuleLangFile(__FILE__); if (!$USER->IsAdmin()) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $cacheType = COption::GetOptionString('cluster', 'cache_type', 'memcache'); if (!extension_loaded('redis') || $cacheType != 'redis') { require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); if ($cacheType != 'redis') { ShowError(GetMessage("CLU_REDIS_DISABLED")); } else { ShowError(GetMessage("CLU_REDIS_NO_EXTENTION")); } require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); die(); } $group_id = intval($_GET["group_id"]); if (!CClusterGroup::GetArrayByID($group_id)) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $errorMessage = null; $sTableID = "tbl_cluster_redis_list"; $oSort = new CAdminSorting($sTableID, "ID", "ASC"); $lAdmin = new CAdminList($sTableID, $oSort); if ($arID = $lAdmin->GroupAction()) { foreach ($arID as $ID) { if ($ID == '') { continue; } $ID = intval($ID); switch ($_REQUEST['action']) { case "delete": CClusterRedis::delete($ID); break; case "pause": CClusterRedis::pause($ID); if(CClusterRedis::$systemConfigurationUpdate === false) $errorMessage = new CAdminMessage(GetMessage("CLU_REDIS_LIST_WARNING_NO_CACHE")); break; case "resume": CClusterRedis::resume($ID); break; } } } $arHeaders = [[ "id" => "ID", "content" => GetMessage("CLU_REDIS_LIST_ID"), "align" => "right", "default" => true, ], [ "id" => "FLAG", "content" => GetMessage("CLU_REDIS_LIST_FLAG"), "align" => "center", "default" => true, ], [ "id" => "STATUS", "content" => GetMessage("CLU_REDIS_LIST_STATUS"), "align" => "center", "default" => true, ], [ "id" => "HOST", "content" => GetMessage("CLU_REDIS_LIST_HOST"), "align" => "left", "default" => true, ], ]; $lAdmin->AddHeaders($arHeaders); if (!isset($_SESSION["REDIS_LIST"])) { $_SESSION["REDIS_LIST"] = []; } $cData = new CClusterRedis; $rsData = $cData->getList(); $uptime = false; $rsData = new CAdminResult($rsData, $sTableID); while ($arRes = $rsData->Fetch()): if (!$arRes["GROUP_ID"]) { $arRes = CClusterRedis::getByID($arRes["ID"]); $cData->Update($arRes["ID"], $arRes); $arRes = CClusterRedis::getByID($arRes["ID"]); } if ($arRes["GROUP_ID"] != $group_id) { continue; } $row =& $lAdmin->AddRow($arRes["ID"], $arRes); $row->AddViewField("ID", '<a href="cluster_redis_edit.php?lang='.LANGUAGE_ID.'&group_id='.$group_id.'&ID='.$arRes["ID"].'">'.$arRes["ID"].'</a>'); $html = ''; if (true) { $html .= '<table width="100%">'; $arSlaveStatus = CClusterRedis::getStatus($arRes["ID"]); foreach ($arSlaveStatus as $key => $value) { if ($key == 'uptime_in_seconds') { $uptime = $value; } elseif ($key == 'keyspace_misses') { $get_misses = $value; } if ($key == 'uptime') { } elseif ($key == 'limit_maxbytes') $html .= ' <tr> <td width="50%" align=right>'.$key.':</td> <td align=left>'.CFile::FormatSize($value).'</td> </tr>'; elseif ($key == 'using_bytes') $html .= ' <tr> <td width="50%" align=right>'.$key.':</td> <td align=left>'.CFile::FormatSize($value).( $limit_maxbytes > 0? ' ('.round($value/$limit_maxbytes*100,2).'%)': '' ).'</td> </tr>'; elseif ($key == 'listen_disabled_num') $html .= ' <tr> <td width="50%" align=right>'.$key.':</td> <td align=left>'.( $value > 0? "<span style=\"color:red\">".$value."</span>": "<span style=\"color:green\">".$value."</span>" ).'</td> </tr>'; elseif ($key == 'get_hits') $html .= ' <tr> <td width="50%" align=right>'.$key.':</td> <td align=left>'.$value.' '.( $value > 0? '('.(round($value/($value+$get_misses)*100,2)).'%)': '' ).'</td> </tr>'; elseif ($key == 'cmd_get') $html .= ' <tr> <td width="50%" align=right>'.$key.':</td> <td align=left>'.$value.( isset($_SESSION["REDIS_LIST"][$arRes["ID"]]) && $value > $_SESSION["REDIS_LIST"][$arRes["ID"]]? " (<span style=\"color:green\">+".($value - $_SESSION["REDIS_LIST"][$arRes["ID"]])."</span>)": "" ).'</td> </tr>'; else $html .= ' <tr> <td width="50%" align=right>'.$key.':</td> <td align=left>'.$value.'</td> </tr>'; if ($key == 'cmd_get') { $_SESSION["REDIS_LIST"][$arRes["ID"]] = $value; } } $html .= '</table>'; } $html = $arRes["STATUS"]."<br />".$html; $row->AddViewField("STATUS", $html); if ($arRes["STATUS"] == "ONLINE" && $uptime > 0) { $htmlFLAG = '<div class="lamp-green"></div>'; } else { $htmlFLAG = '<div class="lamp-red"></div>'; } if ($uptime === false) { $htmlFLAG .= GetMessage("CLU_REDIS_NOCONNECTION"); } else { $htmlFLAG .= GetMessage("CLU_REDIS_UPTIME") . "<br>" . FormatDate([ "s" => "sdiff", "i" => "idiff", "H" => "Hdiff", "" => "ddiff", ], time() - $uptime); } $row->AddViewField("FLAG", $htmlFLAG); $row->AddViewField("HOST", $arRes["HOST"].":".$arRes["PORT"]); $arActions = []; $arActions[] = [ "ICON" => "edit", "DEFAULT" => true, "TEXT" => GetMessage("CLU_REDIS_LIST_EDIT"), "ACTION" => $lAdmin->ActionRedirect('cluster_redis_edit.php?lang='.LANGUAGE_ID.'&group_id='.$group_id.'&ID='.$arRes["ID"]) ]; if ($arRes["STATUS"] == "READY") { $arActions[] = [ "ICON" => "delete", "TEXT" => GetMessage("CLU_REDIS_LIST_DELETE"), "ACTION" => "if(confirm('".GetMessage("CLU_REDIS_LIST_DELETE_CONF")."')) ".$lAdmin->ActionDoGroup($arRes["ID"], "delete", 'group_id='.$group_id) ]; $arActions[] = [ "TEXT" => GetMessage("CLU_REDIS_LIST_START_USING"), "ACTION" => $lAdmin->ActionDoGroup($arRes["ID"], "resume", 'group_id='.$group_id), ]; } elseif ($arRes["STATUS"] == "ONLINE") { $arActions[] = [ "TEXT" => GetMessage("CLU_REDIS_LIST_STOP_USING"), "ACTION" => $lAdmin->ActionDoGroup($arRes["ID"], "pause", 'group_id='.$group_id), ]; } if (!empty($arActions)) { $row->AddActions($arActions); } endwhile; $lAdmin->AddFooter([[ "title" => GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value" => $rsData->SelectedRowsCount(), ], [ "counter" => true, "title" => GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value" => "0", ], ] ); $aContext = [[ "TEXT" => GetMessage("CLU_REDIS_LIST_ADD"), "LINK" => "/bitrix/admin/cluster_redis_edit.php?lang=".LANGUAGE_ID.'&group_id='.$group_id, "TITLE" => GetMessage("CLU_REDIS_LIST_ADD_TITLE"), "ICON" => "btn_new", ], [ "TEXT" => GetMessage("CLU_REDIS_LIST_REFRESH"), "LINK" => "cluster_redis_list.php?lang=".LANGUAGE_ID.'&group_id='.$group_id, ], ]; $lAdmin->AddAdminContextMenu($aContext,false); if ($errorMessage) { echo $errorMessage->Show(); } $lAdmin->CheckListMode(); $APPLICATION->SetTitle(GetMessage("CLU_REDIS_LIST_TITLE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); if ($message) { echo $message->Show(); } $lAdmin->DisplayList(); echo BeginNote(), GetMessage("CLU_REDIS_LIST_NOTE"), EndNote(); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); ?>