%PDF- %PDF-
| Direktori : /etc/ansible/roles/memcached/templates/ |
| Current File : //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];
?>