====== getConnection ======
~~NOTOC~~
== Applies To ==
[[v5:loadbalancer:index|ADOdb Load Balancer]]
== Syntax ==
obj getConnection(
optional string $connectionType = 'write',
optional bool $pinConnection = null
)
===== Description =====
The method ''getConnection()'' gets a connection of the requested type ''(write/readonly)'' and ensures that the connection is established and all initialization is complete.
The returned object is an [[v5:reference:connection:adonewconnection|ADOdb connection object]], which can be accessed in the normal way
---------------------------
To ensure the accuracy of the response, you should have already executed at least one statement against the load balancer connection, or used a method such as **clusterExecute**
===== Usage =====
If the system could not determine whether the command to be executed is read-only or not, for example in a stored procedure, then this method can be used to retrieve a connection of the appropriate type.
$db = new ADOdbLoadBalancer;
$driver = 'mysqli';
$database = 'employees';
$user = 'adodb';
$password = 'adodb';
$host = '192.168.0.200';
$db0 = new ADOdbLoadBalancerConnection( $driver,
'write',
10,
false,
$host,
$user,
$password,
$database );
/*
* Add the connection to the pool
*/
$db->addConnection( $db0 );
$db1 = new ADOdbLoadBalancerConnection( $driver,
'readonly',
10,
false,
$host,
$user,
$password,
$database );
/*
* Add the connection to the pool
*/
$db->addConnection( $db1 );
/*
* Execute something to ensure connection accuracy
*/
$db->clusterExecute('SET SESSION 1=1');
/*
* Find a readwrite connection, pin it for the next statement
*/
$db->getConnection('write',$pin=true);
/*
* Now construct a stored procedure and execute it against $db,
* because it is pinned, it will execute against the 'write' node
*/
$stmt = $db->PrepareSP('kmnProc');
$val1 = 'ADMIN';
$par1 = 'users';
$db->InParameter($stmt,$val1,$par1);
$db->OutParameter($stmt,$ret,'RETVAL');