%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/cluster/classes/mysql/ |
| Current File : /home/bitrix/www/bitrix/modules/cluster/classes/mysql/dbnode.php |
<?php
IncludeModuleLangFile(__FILE__);
class CClusterDBNode extends CAllClusterDBNode
{
function CheckFields(&$arFields, $ID)
{
global $DB, $APPLICATION;
$aMsg = array();
if(array_key_exists("NAME", $arFields))
$arFields["NAME"] = trim($arFields["NAME"]);
if(array_key_exists("ACTIVE", $arFields))
$arFields["ACTIVE"] = $arFields["ACTIVE"] === "Y"? "Y": "N";
if(array_key_exists("SELECTABLE", $arFields))
$arFields["SELECTABLE"] = $arFields["SELECTABLE"] == "N"? "N": "Y";
if(array_key_exists("WEIGHT", $arFields))
{
$weight = intval($arFields["WEIGHT"]);
if($weight < 0)
$weight = 0;
elseif($weight > 100)
$weight = 100;
$arFields["WEIGHT"] = $weight;
}
if($arFields["ACTIVE"] == "Y" && $arFields["ROLE_ID"] != "SLAVE")
{
$obCheck = new CClusterDBNodeCheck;
$nodeDB = $obCheck->SlaveNodeConnection(
$arFields["DB_HOST"],
$arFields["DB_NAME"],
$arFields["DB_LOGIN"],
$arFields["DB_PASSWORD"],
$arFields["ROLE_ID"] == "MASTER"? $arFields["MASTER_HOST"]: false,
$arFields["ROLE_ID"] == "MASTER"? $arFields["MASTER_PORT"]: false
);
if(is_object($nodeDB))
{
$arFields["SERVER_ID"] = intval($obCheck->GetServerVariable($nodeDB, "server_id"));
}
else
{
if(!array_key_exists("STATUS", $arFields))
$arFields["STATUS"] = "OFFLINE";
$aMsg[] = array("id" => "", "text" => $nodeDB);
}
}
if(!empty($aMsg))
{
$e = new CAdminException($aMsg);
$APPLICATION->ThrowException($e);
return false;
}
return true;
}
public static function GetUpTime($node_id)
{
if($node_id > 1)
{
ob_start();
$DB = CDatabase::GetDBNodeConnection($node_id, true, false);
ob_end_clean();
}
else
{
$DB = $GLOBALS["DB"];
}
if(is_object($DB))
{
$rs = $DB->Query("show status like 'Uptime'", false, '', array('fixed_connection'=>true));
if($ar = $rs->Fetch())
return $ar["Value"];
}
return false;
}
}