• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/data/connectionpool.php
  • Класс: BitrixMainDataConnectionPool
  • Вызов: ConnectionPool::createSlaveConnection
protected function createSlaveConnection()
{
	if(!MainLoader::includeModule('cluster'))
	{
		return false;
	}

	$found = CClusterSlave::GetRandomNode();

	if($found !== false)
	{
		$node = CClusterDBNode::GetByID($found["ID"]);

		if(is_array($node) && $node["ACTIVE"] == "Y" && ($node["STATUS"] == "ONLINE" || $node["STATUS"] == "READY"))
		{
			$parameters = [
				'host' => $node["DB_HOST"],
				'database' => $node["DB_NAME"],
				'login' => $node["DB_LOGIN"],
				'password' => $node["DB_PASSWORD"],
			];

			$connection = $this->cloneConnection(self::DEFAULT_CONNECTION_NAME, "node".$node["ID"], $parameters);

			if($connection instanceof MainDBConnection)
			{
				$connection->setNodeId($node["ID"]);
			}

			return $connection;
		}
	}
	return false;
}