obj getConnection( optional string $connectionType = 'write', optional bool $pinConnection = null )
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 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
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');