ADOdb

Database Abstraction Layer for PHP

User Tools

Site Tools


v5:reference:loadbalancer:getconnection

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
v5:reference:loadbalancer:getconnection [2017/05/11 00:35] mnewnhamv5:reference:loadbalancer:getconnection [2017/05/11 00:51] (current) – [Usage] mnewnham
Line 20: Line 20:
 --------------------------- ---------------------------
 <WRAP tip> <WRAP tip>
-To ensure the accuracy of the response, you should have executed at least one statement against the load balancer connection+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**
 </WRAP> </WRAP>
 ===== Usage ===== ===== 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.
 <code php> <code php>
 +$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');
 </code> </code>
  
v5/reference/loadbalancer/getconnection.1494455727.txt.gz · Last modified: 2017/05/11 00:35 by mnewnham