- Модуль: cluster
- Путь к файлу: ~/bitrix/modules/cluster/classes/general/webnode.php
- Класс: CClusterWebnode
- Вызов: CClusterWebnode::GetStatus
static function GetStatus($host, $port, $url)
{
self::$errno = 0;
self::$errstr = '';
$protocol = ($port === "443") ? "ssl://" : "";
$FP = @fsockopen($protocol.$host, $port, self::$errno, self::$errstr, 2);
if($FP)
{
$strVars = $url;
$strRequest = "GET ".$url." HTTP/1.0rn";
$strRequest.= "User-Agent: BitrixSMClusterrn";
$strRequest.= "Accept: */*rn";
$strRequest.= "Host: $hostrn";
$strRequest.= "Accept-Language: enrn";
$strRequest.= "rn";
fputs($FP, $strRequest);
$headers = "";
while(!feof($FP))
{
$line = fgets($FP, 4096);
if($line == "rn")
break;
$headers .= $line;
}
$text = "";
while(!feof($FP))
$text .= fread($FP, 4096);
fclose($FP);
$match = array();
if(preg_match_all('#(.*?)\s*:\s*(.*?)#', $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;
}