Требуется разработчик! Поддержка серверов

CClusterDBNodeCheck::MainNodeForSlave: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=165104

<?php 
//    CClusterDBNodeCheck::MainNodeForSlave()
//    /bitrix/modules/cluster/classes/mysql/dbnode_check.php:167

    
function MainNodeForSlave()
    {
        global 
$DB;

        
$arMasters = array();
        
$cData = new CClusterDBNode;
        
$rsData $cData->08b5e4d1bfd6552b13165b97aaa80a58GetList(
            array(
//Order
                
"ID" => "ASC",
            )
            ,array(
//Filter
                
"=ROLE_ID" => array("MAIN""MASTER"),
            )
        );
        while(
$arData $rsData->Fetch())
            
$arMasters[$arData["ID"]] = $arData;

        foreach(
$arMasters as $node_id => $arNode)
        {
            if(
$node_id == 1)
                
$nodeDB $DB;
            else
                
$nodeDB CDatabase::GetDBNodeConnection($node_idtrue);
            
$arMasters[$node_id]["DB"] = $nodeDB;
        }

        
$auto_increment_increment count($arMasters)+1;
        
$bIncIsOK true;
        foreach(
$arMasters as $node_id => $arNode)
        {
            
$inc $this->GetServerVariable($arNode["DB"], "auto_increment_increment");
            if(
$inc != $auto_increment_increment)
            {
                
$bIncIsOK false;
                
$result[$node_id."_auto_increment_increment"] = array(
                    
"IS_OK" => CClusterDBNodeCheck::ERROR,
                    
"MESSAGE" => GetMessage("CLU_AUTO_INCREMENT_INCREMENT_ERR_MSG", array("#node_id#" => $node_id"#value#" => $auto_increment_increment"#current#" => $inc)),
                    
"WIZ_REC" => GetMessage("CLU_AUTO_INCREMENT_INCREMENT_WIZREC", array("#value#" => $auto_increment_increment)),
                );
            }
        }
        if(
$bIncIsOK)
        {
            
$result["_auto_increment_increment"] = array(
                
"IS_OK" => CClusterDBNodeCheck::OK,
                
"MESSAGE" => GetMessage("CLU_AUTO_INCREMENT_INCREMENT_OK_MSG", array("#value#" => $auto_increment_increment)),
                
"WIZ_REC" => "",
            );
        }

        
$auto_increment_offset = array();
        
$bIncIsOK true;
        foreach(
$arMasters as $node_id => $arNode)
        {
            
$offset $this->GetServerVariable($arNode["DB"], "auto_increment_offset");
            
$mod $offset $auto_increment_increment;
            if(
array_key_exists($mod$auto_increment_offset))
            {
                
$bIncIsOK false;
                
$result[$node_id."_auto_increment_offset"] = array(
                    
"IS_OK" => CClusterDBNodeCheck::ERROR,
                    
"MESSAGE" => GetMessage("CLU_AUTO_INCREMENT_OFFSET_ERR_MSG", array("#node_id#" => $node_id"#current#" => $offset)),
                    
"WIZ_REC" => GetMessage("CLU_AUTO_INCREMENT_OFFSET_WIZREC", array("#current#" => $offset)),
                );
            }
            else
            {
                
$auto_increment_offset[$mod] = $node_id;
            }
        }
        if(
$bIncIsOK)
        {
            
$result["_auto_increment_offset"] = array(
                
"IS_OK" => CClusterDBNodeCheck::OK,
                
"MESSAGE" => GetMessage("CLU_AUTO_INCREMENT_OFFSET_OK_MSG", array("#value#" => $auto_increment_increment)),
                
"WIZ_REC" => "",
            );
        }

        
$bRelayIsOK true;
        foreach(
$arMasters as $node_id => $arNode)
        {
            
$relay_log $this->GetServerVariable($arNode["DB"], "relay_log");
            if(
strlen($relay_log) <= 0)
            {
                
$bRelayIsOK false;
                
$result[$node_id."_relay_log"] = array(
                    
"IS_OK" => CClusterDBNodeCheck::ERROR,
                    
"MESSAGE" => GetMessage("CLU_RELAY_LOG_ERR_MSG", array("#node_id#" => $node_id"#relay-log#" => $relay_log)),
                    
"WIZ_REC" => GetMessage("CLU_RELAY_LOG_WIZREC"),
                );
            }
        }
        if(
$bRelayIsOK)
        {
            
$result["_relay_log"] = array(
                
"IS_OK" => CClusterDBNodeCheck::OK,
                
"MESSAGE" => GetMessage("CLU_RELAY_LOG_OK_MSG"),
                
"WIZ_REC" => "",
            );
        }

        
$bSlaveUpdatesIsOK true;
        foreach(
$arMasters as $node_id => $arNode)
        {
            
$log_slave_updates $this->GetServerVariable($arNode["DB"], "log_slave_updates");
            if(
$log_slave_updates !== 'ON')
            {
                
$bSlaveUpdatesIsOK false;
                
$result[$node_id."_log_slave_updates"] = array(
                    
"IS_OK" => CClusterDBNodeCheck::ERROR,
                    
"MESSAGE" => GetMessage("CLU_LOG_SLAVE_UPDATES_MSG", array("#node_id#" => $node_id"#log-slave-updates#" => $log_slave_updates)),
                    
"WIZ_REC" => GetMessage("CLU_LOG_SLAVE_UPDATES_WIZREC", array("#value#" => 1)),
                );
            }
        }
        if(
$bSlaveUpdatesIsOK)
        {
            
$result["_log_slave_updates"] = array(
                
"IS_OK" => CClusterDBNodeCheck::OK,
                
"MESSAGE" => GetMessage("CLU_LOG_SLAVE_UPDATES_OK_MSG"),
                
"WIZ_REC" => "",
            );
        }

        return 
$result;
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение