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

CClusterSlave::GetStatus: метод Битрикс

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

<?php 
//    CClusterSlave::GetStatus()
//    /bitrix/modules/cluster/classes/mysql/slave.php:258

    
public static function GetStatus($node_id$bSlaveStatus true$bGlobalStatus true$bVariables true)
    {
        global 
$DB;

        
$arNode CClusterDBNode::GetByID($node_id);
        if(!
is_array($arNode))
            return 
false;

        if(
$node_id == 1)
        {
            
$nodeDB $DB;
        }
        else
        {
            
ob_start();
            
$nodeDB CDatabase::GetDBNodeConnection($node_idtruefalse);
            
$error ob_get_contents();
            
ob_end_clean();
        }

        if(!
is_object($nodeDB))
            return 
false;

        
$arStatus = array(
            
'server_id' => null,
        );

        if(
$bVariables)
        {
            
$rs $nodeDB->Query("show variables like 'server_id'"false"", array("fixed_connection" => true));
            if(
$ar $rs->Fetch())
                
$arStatus['server_id'] = $ar["Value"];
        }

        
$rsSlaves CClusterDBNode::GetList(array(), array("=MASTER_ID" => $node_id));
        if(
$rsSlaves->Fetch())
        {
            
$arStatus array_merge($arStatus, array(
                
'File' => null,
                
'Position' => null,
            ));

            if(
$bSlaveStatus)
            {
                
$rs $nodeDB->Query("SHOW MASTER STATUS"true"", array("fixed_connection" => true));
                if(!
$rs)
                    return 
GetMessage("CLU_NO_PRIVILEGES", array("#sql#" => "GRANT REPLICATION CLIENT on *.* to '".$nodeDB->DBLogin."'@'%';"));
                
$ar $rs->Fetch();
                if(
is_array($ar))
                {
                    foreach(
$ar as $key=>$value)
                    {
                        if(
$key == 'Last_Error')
                            
$key 'Last_SQL_Error';
                        if(
array_key_exists($key$arStatus))
                            
$arStatus[$key] = $value;
                    }
                }
            }
        }


        if(
strlen($arNode["MASTER_ID"]))
        {
            
$arStatus array_merge($arStatus, array(
                
'Slave_IO_State' => null,
                
'Slave_IO_Running' => null,
                
'Read_Master_Log_Pos' => null,
                
'Slave_SQL_Running' => null,
                
'Exec_Master_Log_Pos' => null,
                
'Seconds_Behind_Master' => null,
                
'Last_IO_Error' => null,
                
'Last_SQL_Error' => null,
    
//            'Replicate_Ignore_Table' => null,
                
'Com_select' => null,
            ));

            if(
$bSlaveStatus)
            {
                
$rs $nodeDB->Query("SHOW SLAVE STATUS"true"", array("fixed_connection" => true));
                if(!
$rs)
                    return 
GetMessage("CLU_NO_PRIVILEGES", array("#sql#" => "GRANT REPLICATION CLIENT on *.* to '".$nodeDB->DBLogin."'@'%';"));
                
$ar $rs->Fetch();
                if(
is_array($ar))
                {
                    foreach(
$ar as $key=>$value)
                    {
                        if(
$key == 'Last_Error')
                            
$key 'Last_SQL_Error';
                        if(
array_key_exists($key$arStatus))
                            
$arStatus[$key] = $value;
                    }
                }
            }
        }

        if(
$bGlobalStatus)
        {
            
$rs $nodeDB->Query("show global status where Variable_name in ('Com_select', 'Com_do')"true"", array("fixed_connection" => true));
            if(
is_object($rs))
            {
                while(
$ar $rs->Fetch())
                {
                    if(
$ar['Variable_name'] == 'Com_do')
                        
$arStatus['Com_select'] -= $ar['Value']*2;
                    else
                        
$arStatus['Com_select'] += $ar['Value'];
                }
            }
            else
            {
                
$rs $nodeDB->Query("show status like 'Com_select'"false"", array("fixed_connection" => true));
                
$ar $rs->Fetch();
                if(
$ar)
                    
$arStatus['Com_select'] += $ar['Value'];
                
$rs $nodeDB->Query("show status like 'Com_do'"false"", array("fixed_connection" => true));
                
$ar $rs->Fetch();
                if(
$ar)
                    
$arStatus['Com_select'] -= $ar['Value']*2;
            }
        }

        return 
$arStatus;
    }

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

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

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

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

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

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

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

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