Created
June 18, 2015 12:38
-
-
Save random-robbie/73d4373a32460b6bb603 to your computer and use it in GitHub Desktop.
Load Balance & Fail Over PDO mysql Connection
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$ran = rand(1,10); | |
if ($ran < 5) { | |
$host = '10.0.0.2'; | |
$backup = '10.0.0.3:3306'; | |
} else { | |
$host = '10.0.0.3:3306'; | |
$backup = '10.0.0.2:3306'; | |
} | |
// UTF-8 is a character encoding scheme that allows you to conveniently store | |
// a wide varienty of special characters, like ¢ or €, in your database. | |
// By passing the following $options array to the database connection code we | |
// are telling the MySQL server that we want to communicate with it using UTF-8 | |
// See Wikipedia for more information on UTF-8: | |
// http://en.wikipedia.org/wiki/UTF-8 | |
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); | |
// A try/catch statement is a common method of error handling in object oriented code. | |
// First, PHP executes the code within the try block. If at any time it encounters an | |
// error while executing that code, it stops immediately and jumps down to the | |
// catch block. For more detailed information on exceptions and try/catch blocks: | |
// http://us2.php.net/manual/en/language.exceptions.php | |
try | |
{ | |
// This statement opens a connection to your database using the PDO library | |
// PDO is designed to provide a flexible interface between PHP and many | |
// different types of database servers. For more information on PDO: | |
// http://us2.php.net/manual/en/class.pdo.php | |
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); | |
} | |
catch(PDOException $ex) | |
{ | |
// If an error occurs while opening a connection to your database, it will | |
// be trapped here. The script will output an error and stop executing. | |
// Note: On a production website, you should not output $ex->getMessage(). | |
// It may provide an attacker with helpful information about your code | |
// (like your database username and password). | |
$db = new PDO("mysql:host={$backup};dbname={$dbname};charset=utf8", $username, $password, $options); or die('Could not connect to the database server!'); OR | |
die("Failed to connect to the database: " . $ex->getMessage()); | |
} | |
// This statement configures PDO to throw an exception when it encounters | |
// an error. This allows us to use try/catch blocks to trap database errors. | |
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | |
// This statement configures PDO to return database rows from your database using an associative | |
// array. This means the array will have string indexes, where the string value | |
// represents the name of the column in your database. | |
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment