Richard Richard - 7 months ago 14
PHP Question

Database replication: intelligent database selection within PHP?

I'm using PHP with a replicated MySQL database.

I want to do some database load balancing. Currently I have the rather crude:

$ran = rand(1,10);
if ($ran < 5) {
$db = '10.0.0.2:3306';
} else {
$db = '10.0.0.3:3306';
}
// connect to the database
$con = mysql_connect($db,'elastic1','oag4Chai')
or die('Could not connect to the server!');


But obviously if one of the databases is down, then our web pages will show error messages half the time.

Is there a more robust way to do this - i.e. check if the database is up before connecting?

It could be just a try/catch statement I guess, or I could do some more sophisticated load balancing - suggestions gratefully received.

Answer

Its not the web page, that shows the errors, its you

die('Could not connect to the server!')

die() has nothing to do in "real code" nowadays.

$ran = rand(1,10);
if ($ran < 5) {
  $db = '10.0.0.2:3306';
} else {
  $db = '10.0.0.3:3306';
}
// connect to the database
$con = mysql_connect($db,'elastic1','oag4Chai');
if (!$con) { /* Connect to the other one */ }