%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/proc/self/root/etc/ansible/roles/memcached/templates/
Upload File :
Create Path :
Current File : //proc/self/root/proc/self/root/etc/ansible/roles/memcached/templates/memcached_cluster_node.php.j2

<?
// {{ ansible_managed }}
// {{ memcached_server }}
$_SERVER["DOCUMENT_ROOT"] = '{{ item.DocumentRoot }}';
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('BX_NO_ACCELERATOR_RESET', true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

if(!CModule::IncludeModule('cluster'))
{
  // skip memcached registration if module cluster not installed
	echo "Not found cluster module for {{ item.SiteName }}";
	return 0;
};

// register variables for node
$mcHost = "{{ inventory_hostname }}";
$mcStatus = "{{ memcached_status|default('ONLINE') }}";
$mcPort = "{{ memcached_port|default('11211') }}";
$mcWeight = 100;
$groupId = 1;

// return values
$OK   = array( 0, 'Ok' );
$ERR  = array( 1, 'Error');

$dbNode = new CClusterDBNode;
$rsNodes = $dbNode->GetList(
	array(),
	array(
    "=ROLE_ID" => array("MAIN"),
    "=MASTER_ID" => false,
    "=STATUS" => "ONLINE",
	)
);

if($arNode = $rsNodes->Fetch())
{
	$groupId = $arNode["GROUP_ID"];
}
else
{
	$returnResult = $ERR;
	echo "Can't find db master: ". $returnResult[1];
	return $returnResult[0];
}

// return values
$OK   = array( 0, 'Ok' );
$ERR  = array( 1, 'Error');

$arMemcacheServers = CClusterMemcache::LoadConfig();
$arServer = false;

if(is_array($arMemcacheServers))
{
	foreach($arMemcacheServers as $server)
	{
		if($server["HOST"] == $mcHost && $server["PORT"] == $mcPort)
		{
			$arServer = $server;
		}
	}
}

$ob = new CClusterMemcache;
$arFields = array(
	"GROUP_ID" => $groupId,
	"HOST" => $mcHost,
	"PORT" => $mcPort,
	"WEIGHT" => $mcWeight,
);

if(is_array($arServer))
{
	if ($mcStatus == "OFFLINE")
	{
		$res = $ob->Pause($arServer["ID"]);
	}
	else
	{
		$res = $ob->Update($arServer["ID"], $arFields);

		if(intval($res) > 0)
			$ob->Resume($res);
	}
}
else
{
	$res = $ob->Add($arFields);

	if(intval($res) > 0)
		$ob->Resume($res);
}

$returnResult = intval($res)>0 ? $OK : $ERR;
echo "Update claster memcached node: ". $returnResult[1];
return $returnResult[0];

?>

Zerion Mini Shell 1.0