Skip to content

Instantly share code, notes, and snippets.

@mesilov
Created September 2, 2012 13:47
Show Gist options
  • Save mesilov/3599054 to your computer and use it in GitHub Desktop.
Save mesilov/3599054 to your computer and use it in GitHub Desktop.
Класс для индикации на каком из серверов сейчас работает приложение. Определение сервера производится на основании $_SERVER['SERVER_NAME']
<?
/**
* Класс для индикации на каком из серверов сейчас работает приложение.
* Определение сервера производится на основании $_SERVER['SERVER_NAME']
* Возможные типы серверов:
* DEV — сервер разработки
* TEST — сервер тестирования
* PRODUCTION — боевой серевер
*
* @author Maxim Mesilov
*/
class DbgServerInformer
{
/**
* сервер разработки
*/
CONST DEV = 1;
/**
* тестовый сервер
*/
CONST TEST = 2;
/**
* боевой сервер
*/
CONST PROD = 3;
/**
* массив со списком серверов
*
* @var array
*/
static private $arServerList;
/**
* функция проверки текущего сервера
*
* @param integer $serverTypeToCheck — тип сервера для проверки
* @return boolean - результат проверки
*/
static private function CheckServerType($serverTypeToCheck)
{
$result = NULL;
$arCurrentServer = array(
'SERVER_NAME' => $_SERVER['SERVER_NAME'],
);
$serverType = NULL;
foreach(self::$arServerList as $cnt => $itemServer)
{
if($arCurrentServer['SERVER_NAME'] == $itemServer['SERVER_NAME'])
{
$serverType = $itemServer['SERVER_TYPE'];
break;
}
}
if($serverTypeToCheck == $serverType)
{
$result = TRUE;
}
else
{
$result = FALSE;
}
return $result;
}// end of CheckServerType
/**
* Загрузка списка серверов для проверки. Формат списка:
* array(
* ...
* array(
* "NAME" => "человеческое название сервера"
* "SERVER_TYPE" => DbgServerInformer::DEV или DbgServerInformer::TEST или DbgServerInformer::TEST
* "SERVER_NAME" => 'содержимое переменной $_SERVER['SERVER_NAME']',
* )
* ...
* )
*
* @param array $arServerList — массив серверов
* @return boolean — TRUE если правила загружены успешно
*/
static public function SetServerListConfig($arServerList)
{
/**
* @todo пробежать по конфигу и в каждом узле проверить наличие SERVER_TYPE
*/
self::$arServerList = $arServerList;
return TRUE;
}// end of SetServerListConfig
/**
* это боевой сервер?
* @return boolean
*/
static public function IsProd()
{
return self::CheckServerType(DbgServerInformer::PROD);
}//end of IsProd
/**
* это сервер разработки?
* @return boolean
*/
static public function IsDev()
{
return self::CheckServerType(DbgServerInformer::DEV);
}// end of IsDev
/**
* это тестовый сервер?
* @return boolean
*/
static public function IsTest()
{
return self::CheckServerType(DbgServerInformer::TEST);
}// end of IsTest
}// end of DbgServerInformer
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment