コード例 #1
0
 public static function getServerList()
 {
     $servers = array_merge(CClusterDBNode::getServerList(), CClusterMemcache::getServerList(), CClusterWebnode::getServerList());
     if (empty($servers)) {
         $servers[] = array("ID" => 0, "HOST" => "", "DEDICATED" => "Y", "EDIT_URL" => "");
     }
     return $servers;
 }
コード例 #2
0
ファイル: group.php プロジェクト: DarneoStudio/bitrix
 function Delete($ID)
 {
     global $DB, $APPLICATION;
     $aMsg = array();
     $ID = intval($ID);
     $rsWebNodes = CClusterWebnode::GetList(array(), array("=GROUP_ID" => $ID));
     if ($rsWebNodes->Fetch()) {
         $aMsg[] = array("text" => GetMessage("CLU_GROUP_HAS_WEBNODE"));
     }
     $rsDBNodes = CClusterDBNode::GetList(array(), array("=GROUP_ID" => $group_id));
     if ($rsWebNodes->Fetch()) {
         $aMsg[] = array("text" => GetMessage("CLU_GROUP_HAS_DBNODE"));
     }
     /*TODO: memcache check*/
     if (empty($aMsg)) {
         $res = $DB->Query("DELETE FROM b_cluster_group WHERE ID = " . $ID, false, '', array('fixed_connection' => true));
     } else {
         $e = new CAdminException($aMsg);
         $APPLICATION->ThrowException($e);
         return false;
     }
     return $res;
 }
コード例 #3
0
 function GetStatus($host, $port, $url)
 {
     self::$errno = 0;
     self::$errstr = '';
     $FP = @fsockopen($host, $port, self::$errno, self::$errstr, 2);
     if ($FP) {
         $strVars = $url;
         $strRequest = "GET " . $url . " HTTP/1.0\r\n";
         $strRequest .= "User-Agent: BitrixSMCluster\r\n";
         $strRequest .= "Accept: */*\r\n";
         $strRequest .= "Host: {$host}\r\n";
         $strRequest .= "Accept-Language: en\r\n";
         $strRequest .= "\r\n";
         fputs($FP, $strRequest);
         $headers = "";
         while (!feof($FP)) {
             $line = fgets($FP, 4096);
             if ($line == "\r\n") {
                 break;
             }
             $headers .= $line;
         }
         $text = "";
         while (!feof($FP)) {
             $text .= fread($FP, 4096);
         }
         fclose($FP);
         $match = array();
         if (preg_match_all('#<dt>(.*?)\\s*:\\s*(.*?)</dt>#', $text, $match)) {
             $arResult = array();
             foreach ($match[0] as $i => $m0) {
                 $key = $match[1][$i];
                 $value = $match[2][$i];
                 if ($key == 'Total accesses') {
                     $accessMatch = array();
                     if (preg_match('/^(.*) - (.*)\\s*:\\s*(.*)$/', $value, $accessMatch)) {
                         $value = $accessMatch[1];
                         $arResult[$accessMatch[2]] = $accessMatch[3];
                     }
                 }
                 $arResult[$key] = $value;
             }
             return $arResult;
         }
     }
     return false;
 }
コード例 #4
0
if ($arID = $lAdmin->GroupAction()) {
    foreach ($arID as $ID) {
        if (strlen($ID) <= 0) {
            continue;
        }
        $ID = IntVal($ID);
        switch ($_REQUEST['action']) {
            case "delete":
                CClusterWebnode::Delete($ID);
                break;
        }
    }
}
$arHeaders = array(array("id" => "ID", "content" => GetMessage("CLU_WEBNODE_LIST_ID"), "align" => "right", "default" => true), array("id" => "FLAG", "content" => GetMessage("CLU_WEBNODE_LIST_FLAG"), "align" => "center", "default" => true), array("id" => "STATUS", "content" => GetMessage("CLU_WEBNODE_LIST_STATUS"), "align" => "center", "default" => true), array("id" => "NAME", "content" => GetMessage("CLU_WEBNODE_LIST_NAME"), "align" => "left", "default" => true), array("id" => "HOST", "content" => GetMessage("CLU_WEBNODE_LIST_HOST"), "align" => "left", "default" => true), array("id" => "STATUS_URL", "content" => GetMessage("CLU_WEBNODE_LIST_STATUS_URL"), "align" => "left", "default" => false), array("id" => "DESCRIPTION", "content" => GetMessage("CLU_WEBNODE_LIST_DESCRIPTION"), "align" => "left", "default" => false));
$lAdmin->AddHeaders($arHeaders);
$cData = new CClusterWebnode();
$rsData = $cData->GetList(array("ID" => "ASC"), array("=GROUP_ID" => $group_id));
$rsData = new CAdminResult($rsData, $sTableID);
while ($arRes = $rsData->Fetch()) {
    $row =& $lAdmin->AddRow($arRes["ID"], $arRes);
    $uptime = false;
    $RestartTime = "";
    $CurrentTime = "";
    $arStatus = CClusterWEBNode::GetStatus($arRes["HOST"], $arRes["PORT"], $arRes["STATUS_URL"]);
    if (is_array($arStatus)) {
        $html = '<table width="100%">';
        foreach ($arStatus as $key => $value) {
            if ($key == 'Restart Time') {
                $RestartTime = CClusterWEBNode::ParseDateTime($value);
            } elseif ($key == 'Current Time') {
                $CurrentTime = CClusterWEBNode::ParseDateTime($value);
コード例 #5
0
        $res = $ob->Delete($ID);
        if ($res) {
            LocalRedirect("/bitrix/admin/cluster_dbnode_list.php?lang=" . LANG . '&group_id=' . $group_id);
        } else {
            $bVarsFromForm = true;
        }
    }
}
ClearVars("str_");
$str_NAME = "";
$str_DESCRIPTION = "";
$str_HOST = "";
$str_PORT = "80";
$str_STATUS_URL = "/server-status";
if ($ID > 0) {
    $rs = CClusterWebnode::GetList(array(), array("=ID" => $ID, "=GROUP_ID" => $group_id), array());
    if (!$rs->ExtractFields("str_")) {
        $ID = 0;
    }
}
if ($bVarsFromForm) {
    $DB->InitTableVarsForEdit("b_cluster_webnode", "", "str_");
}
$APPLICATION->SetTitle($ID > 0 ? GetMessage("CLU_WEBNODE_EDIT_EDIT_TITLE") : GetMessage("CLU_WEBNODE_EDIT_ADD_TITLE"));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
$aMenu = array(array("TEXT" => GetMessage("CLU_WEBNODE_EDIT_MENU_LIST"), "TITLE" => GetMessage("CLU_WEBNODE_EDIT_MENU_LIST_TITLE"), "LINK" => "cluster_webnode_list.php?lang=" . LANG . '&group_id=' . $group_id, "ICON" => "btn_list"));
$context = new CAdminContextMenu($aMenu);
$context->Show();
if ($message) {
    echo $message->Show();
}