DBFarmRole::GetServersByFilter PHP Method

GetServersByFilter() public method

public GetServersByFilter ( $filter_args = [], $ufilter_args = [] )
    public function GetServersByFilter($filter_args = array(), $ufilter_args = array())
    {
        $sql = "SELECT server_id FROM servers WHERE `farm_roleid`=?";
        $args = array($this->ID);
        foreach ((array) $filter_args as $k => $v) {
            if (is_array($v)) {
                foreach ($v as $vv) {
                    array_push($args, $vv);
                }
                $sql .= " AND `{$k}` IN (" . implode(",", array_fill(0, count($v), "?")) . ")";
            } else {
                $sql .= " AND `{$k}`=?";
                array_push($args, $v);
            }
        }
        foreach ((array) $ufilter_args as $k => $v) {
            if (is_array($v)) {
                foreach ($v as $vv) {
                    array_push($args, $vv);
                }
                $sql .= " AND `{$k}` NOT IN (" . implode(",", array_fill(0, count($v), "?")) . ")";
            } else {
                $sql .= " AND `{$k}`!=?";
                array_push($args, $v);
            }
        }
        $res = $this->DB->GetAll($sql, $args);
        $retval = array();
        foreach ((array) $res as $i) {
            if ($i['server_id']) {
                $retval[] = DBServer::LoadByID($i['server_id']);
            }
        }
        return $retval;
    }

Usage Example

Beispiel #1
0
 public function getValue(DBFarmRole $dbFarmRole, Scalr_Scaling_FarmRoleMetric $farmRoleMetric)
 {
     $servers = $dbFarmRole->GetServersByFilter(array('status' => SERVER_STATUS::RUNNING));
     $dbFarm = $dbFarmRole->GetFarmObject();
     $roleLA = 0;
     if (count($servers) == 0) {
         return false;
     }
     $retval = array();
     foreach ($servers as $DBServer) {
         if ($dbFarmRole->GetSetting(DBFarmRole::SETTING_SCALING_EXCLUDE_DBMSR_MASTER) == 1) {
             $isMaster = $DBServer->GetProperty(SERVER_PROPERTIES::DB_MYSQL_MASTER) == 1 || $DBServer->GetProperty(Scalr_Db_Msr::REPLICATION_MASTER) == 1;
             if ($isMaster) {
                 continue;
             }
         }
         $port = $DBServer->GetProperty(SERVER_PROPERTIES::SZR_SNMP_PORT);
         $period = $farmRoleMetric->getSetting(self::SETTING_LA_PERIOD);
         if (!$period) {
             $period = '15';
         }
         $this->snmpClient->connect($DBServer->remoteIp, $port ? $port : 161, $dbFarm->Hash, null, null, false);
         $res = $this->snmpClient->get($this->snmpOids[$period]);
         $la = (double) $res;
         $retval[] = $la;
     }
     return $retval;
 }
All Usage Examples Of DBFarmRole::GetServersByFilter