function SaveConfig($arServerList) { self::$arList = false; $isOnline = false; $content = '<' . '? define("BX_MEMCACHE_CLUSTER", "' . EscapePHPString(CMain::GetServerUniqID()) . '"); $arList = array( '; $defGroup = 1; $arGroups = array(); $rsGroups = CClusterGroup::GetList(array("ID" => "DESC")); while ($arGroup = $rsGroups->Fetch()) { $defGroup = $arGroups[$arGroup["ID"]] = intval($arGroup["ID"]); } foreach ($arServerList as $i => $arServer) { $isOnline |= $arServer["STATUS"] == "ONLINE"; $GROUP_ID = intval($arServer["GROUP_ID"]); if (!array_key_exists($arServer["GROUP_ID"], $arGroups)) { $GROUP_ID = $defGroup; } $content .= "\t" . intval($i) . " => array(\n"; $content .= "\t\t'ID' => \"" . EscapePHPString($arServer["ID"]) . "\",\n"; $content .= "\t\t'GROUP_ID' => " . $GROUP_ID . ",\n"; $content .= "\t\t'HOST' => \"" . EscapePHPString($arServer["HOST"]) . "\",\n"; $content .= "\t\t'PORT' => " . intval($arServer["PORT"]) . ",\n"; $content .= "\t\t'WEIGHT' => " . intval($arServer["WEIGHT"]) . ",\n"; if ($arServer["STATUS"] == "ONLINE") { $content .= "\t\t'STATUS' => \"ONLINE\",\n"; } elseif ($arServer["STATUS"] == "OFFLINE") { $content .= "\t\t'STATUS' => \"OFFLINE\",\n"; } else { $content .= "\t\t'STATUS' => \"READY\",\n"; } $content .= "\t),\n"; } $content .= '); ?' . '>'; file_put_contents($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/cluster/memcache.php", $content); bx_accelerator_reset(); self::$systemConfigurationUpdate = null; $cache = \Bitrix\Main\Config\Configuration::getValue('cache'); if ($isOnline) { if (!is_array($cache) || !isset($cache['type']) || !is_array($cache['type']) || !isset($cache['type']['class_name']) || !$cache['type']['class_name'] === 'CPHPCacheMemcacheCluster') { \Bitrix\Main\Config\Configuration::setValue('cache', array('type' => array('class_name' => 'CPHPCacheMemcacheCluster', 'extension' => 'memcache', 'required_file' => 'modules/cluster/classes/general/memcache_cache.php'))); self::$systemConfigurationUpdate = true; } } else { if (is_array($cache) && isset($cache['type']) && is_array($cache['type']) && isset($cache['type']['class_name']) && $cache['type']['class_name'] === 'CPHPCacheMemcacheCluster') { \Bitrix\Main\Config\Configuration::setValue('cache', null); self::$systemConfigurationUpdate = false; } } }
function InitStep() { global $DB; $wizard = $this->GetWizard(); if (!CModule::IncludeModule('cluster')) { $this->SetError(GetMessage('CLUWIZ_NO_MODULE_ERROR')); } elseif ($DB->type != "MYSQL") { $this->SetError(GetMessage('CLUWIZ_DATABASE_NOT_SUPPORTED')); } elseif (!CClusterGroup::GetArrayByID(intval($wizard->GetVar("group_id")))) { $this->SetError(GetMessage('CLUWIZ_NO_GROUP_ERROR')); } if (preg_match("/^(.+):(\\d+)\$/", $GLOBALS["DB"]->DBHost, $match)) { $wizard->SetDefaultVar("master_host", $match[1]); $wizard->SetDefaultVar("master_port", $match[2]); } else { $wizard->SetDefaultVar("master_host", ''); $wizard->SetDefaultVar("master_port", ''); } }
public static function SaveConfig($arServerList) { self::$arList = false; $content = '<'.'? // define("BX_MEMCACHE_CLUSTER", "'.EscapePHPString(CMain::GetServerUniqID()).'"); $arList = array( '; $defGroup = 1; $arGroups = array(); $rsGroups = CClusterGroup::GetList(array("ID" => "DESC")); while($arGroup = $rsGroups->Fetch()) $defGroup = $arGroups[$arGroup["ID"]] = intval($arGroup["ID"]); foreach($arServerList as $i => $arServer) { $GROUP_ID = intval($arServer["GROUP_ID"]); if(!array_key_exists($arServer["GROUP_ID"], $arGroups)) $GROUP_ID = $defGroup; $content .= "\t".intval($i)." => array(\n"; $content .= "\t\t'ID' => \"".EscapePHPString($arServer["ID"])."\",\n"; $content .= "\t\t'GROUP_ID' => ".$GROUP_ID.",\n"; $content .= "\t\t'HOST' => \"".EscapePHPString($arServer["HOST"])."\",\n"; $content .= "\t\t'PORT' => ".intval($arServer["PORT"]).",\n"; $content .= "\t\t'WEIGHT' => ".intval($arServer["WEIGHT"]).",\n"; if($arServer["STATUS"] == "ONLINE") $content .= "\t\t'STATUS' => \"ONLINE\",\n"; elseif($arServer["STATUS"] == "OFFLINE") $content .= "\t\t'STATUS' => \"OFFLINE\",\n"; else $content .= "\t\t'STATUS' => \"READY\",\n"; $content .= "\t),\n"; } $content .= '); ?'.'>'; file_put_contents( $_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/cluster/memcache.php" ,$content ); }
function InitStep() { global $DB; $wizard = $this->GetWizard(); if (!CModule::IncludeModule('cluster')) { $this->SetError(GetMessage('CLUWIZ_NO_MODULE_ERROR')); } elseif ($DB->type != "MYSQL") { $this->SetError(GetMessage('CLUWIZ_DATABASE_NOT_SUPPORTED')); } else { $arGroup = CClusterGroup::GetArrayByID(intval($wizard->GetVar("group_id"))); if (!$arGroup) { $this->SetError(GetMessage('CLUWIZ_NO_GROUP_ERROR')); } else { $cData = new CClusterDBNode(); $rsData = $cData->GetList(array(), array("=ROLE_ID" => array("MAIN", "MASTER"), "=GROUP_ID" => $arGroup["ID"], "=STATUS" => "ONLINE")); $this->arMaster = $rsData->Fetch(); if (!$this->arMaster) { $this->SetError(GetMessage('CLUWIZ_NO_MASTER_ERROR')); } } } $wizard->SetDefaultVar("master_host", ''); $wizard->SetDefaultVar("master_port", ''); if ($this->arMaster) { if ($this->arMaster["ID"] == 1) { if (preg_match("/^(.+):(\\d+)\$/", $GLOBALS["DB"]->DBHost, $match)) { $wizard->SetDefaultVar("master_host", $match[1]); $wizard->SetDefaultVar("master_port", $match[2]); } } else { if (preg_match("/^(.+):(\\d+)\$/", $this->arMaster["DB_HOST"], $match)) { $wizard->SetDefaultVar("master_host", $match[1]); $wizard->SetDefaultVar("master_port", $match[2]); } } } }
function InitStep() { global $DB; $wizard =& $this->GetWizard(); $node_id = intval($wizard->GetVar('node_id')); if (!CModule::IncludeModule('cluster')) { $this->SetError(GetMessage('CLUWIZ_NO_MODULE_ERROR')); } elseif ($DB->type != "MYSQL") { $this->SetError(GetMessage('CLUWIZ_DATABASE_NOT_SUPPORTED')); } elseif ($node_id <= 1) { $this->SetError(GetMessage('CLUWIZ_NO_NODE_ERROR')); } else { $this->arNode = CClusterDBNode::GetByID($node_id); if (!is_array($this->arNode)) { $this->SetError(GetMessage('CLUWIZ_NO_NODE_ERROR')); } else { // $arNode["ROLE_ID"] == "SLAVE" // $arNode["STATUS"] == "READY" $this->nodeDB = CDatabase::GetDBNodeConnection($this->arNode["ID"], true, false); if (!is_object($this->nodeDB)) { $this->SetError(GetMessage('CLUWIZ_NO_CONN_ERROR')); } else { $arGroup = CClusterGroup::GetArrayByID(intval($wizard->GetVar("group_id"))); if (!$arGroup) { $this->SetError(GetMessage('CLUWIZ_NO_GROUP_ERROR')); } else { $cData = new CClusterDBNode(); $rsData = $cData->GetList(array(), array("=ROLE_ID" => array("MAIN", "MASTER"), "=GROUP_ID" => $arGroup["ID"], "=STATUS" => "ONLINE")); $this->arMaster = $rsData->Fetch(); if (!$this->arMaster) { $this->SetError(GetMessage('CLUWIZ_NO_MASTER_ERROR')); } } } } } }
<?php define("ADMIN_MODULE_NAME", "cluster"); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/cluster/include.php"; IncludeModuleLangFile(__FILE__); if (!$USER->IsAdmin()) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $group_id = intval($_GET["group_id"]); if (!CClusterGroup::GetArrayByID($group_id)) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $sTableID = "tbl_cluster_memcache_list"; $oSort = new CAdminSorting($sTableID, "ID", "ASC"); $lAdmin = new CAdminList($sTableID, $oSort); if ($arID = $lAdmin->GroupAction()) { foreach ($arID as $ID) { if (strlen($ID) <= 0) { continue; } $ID = IntVal($ID); switch ($_REQUEST['action']) { case "delete": CClusterMemcache::Delete($ID); break; case "pause": CClusterMemcache::Pause($ID); break; case "resume": CClusterMemcache::Resume($ID);
<?php define("ADMIN_MODULE_NAME", "cluster"); 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")); } $sTableID = "tbl_cluster_group_list"; $oSort = new CAdminSorting($sTableID); $lAdmin = new CAdminList($sTableID); $arHeaders = array(array("id" => "ID", "content" => GetMessage("CLU_INDEX_GROUP_ID"), "align" => "right", "default" => true), array("id" => "NAME", "content" => GetMessage("CLU_INDEX_GROUP_NAME"), "align" => "center", "default" => true)); $lAdmin->AddHeaders($arHeaders); $rsData = CClusterGroup::GetList(); $rsData = new CAdminResult($rsData, $sTableID); while ($arRes = $rsData->Fetch()) { $row =& $lAdmin->AddRow($arRes["ID"], $arRes); $row->AddViewField("ID", '<a href="cluster_group_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $arRes["ID"] . '">' . $arRes["ID"] . '</a>'); $arActions = array(array("ICON" => "edit", "DEFAULT" => true, "TEXT" => GetMessage("CLU_INDEX_LIST_EDIT"), "ACTION" => $lAdmin->ActionRedirect('cluster_group_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $arRes["ID"]))); $row->AddActions($arActions); } $aContext = array(array("TEXT" => GetMessage("CLU_INDEX_ADD_GROUP"), "TITLE" => GetMessage("CLU_INDEX_ADD_GROUP_TITLE"), "LINK" => "cluster_group_edit.php?lang=" . LANG, "ICON" => "btn_new")); $lAdmin->AddAdminContextMenu($aContext, false); $lAdmin->CheckListMode(); $APPLICATION->SetTitle(GetMessage("CLU_INDEX_TITLE")); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; if ($message) { echo $message->Show(); } $lAdmin->DisplayList();
$res = $ID = $ob->Add($arFields); } if ($res) { if (isset($_POST["apply"])) { LocalRedirect("/bitrix/admin/cluster_group_edit.php?ID=" . $ID . "&lang=" . LANG . "&" . $tabControl->ActiveTabParam()); } else { LocalRedirect("/bitrix/admin/cluster_index.php?lang=" . LANG); } } else { if ($e = $APPLICATION->GetException()) { $message = new CAdminMessage(GetMessage("CLU_GROUP_EDIT_SAVE_ERROR"), $e); } $bVarsFromForm = true; } } elseif ($_POST["action"] == "delete") { $ob = new CClusterGroup(); $res = $ob->Delete($ID); if ($res) { LocalRedirect("/bitrix/admin/cluster_index.php?lang=" . LANG); } else { if ($e = $APPLICATION->GetException()) { $message = new CAdminMessage(GetMessage("CLU_GROUP_EDIT_DELETE_ERROR"), $e); } $bVarsFromForm = true; } } } ClearVars("str_"); $str_NAME = ""; if ($ID > 0) { $rs = CClusterGroup::GetList(array(), array("=ID" => $ID), array());
function GetArrayByID($ID) { $rs = CClusterGroup::GetList(array(), array("=ID" => $ID)); return $rs->Fetch(); }