2010-10-30 6 views
0

En php est-il un moyen rapide de dire si db1 est indisponible se connecter à db2 à la place?Connectez-vous à failover db en PHP

Voici ce que je fais maintenant:

$username="XXXXXXXXX"; 
$password="XXXXXXXXX"; 
$database="XXXXXXXXX"; 
$hostname="XXXXXXXXX"; 

mysql_connect($hostname,$username,$password); 

@mysql_select_db($database) or die("unable to select database"); 

Répondre

1

mysql_connecet retourne false si la connexion échoue.

$username="XXXXXXXXX"; 
$password="XXXXXXXXX"; 
$database="XXXXXXXXX"; 
$hostname="XXXXXXXXX"; 
$hostname2="XXXXXXXXX"; // let's assume they have the same username and pw 

$conn=mysql_connect($hostname,$username,$password); //Connect to the database. 


if (!$conn) { 
    mysql_close($conn); 
    echo "Cannot connect to DB1"; 
    $conn=mysql_connect($hostname2,$username,$password); //Connect to the database. 
    if (!$conn) { 
    mysql_close($conn); 
    echo "Cannot connect to DB2"; 
    die('No DBs'); 
    } 
} 
else { 
    // $conn has your connection 
} 

comportement similaire avec mysql_select_db (elle retourne false si elle échoue)

0

Bien sûr .... Je trouve ce droit après avoir affiché la question: http://www.evolt.org/failover-database-connection-with-php-mysql

J'ai fini par faire ceci:

$db1['host'] = 'localhost'; 
$db1['user'] = 'user'; 
$db1['pass'] = 'pass'; 
$db1['dbName'] = 'database'; 

$db2['host'] = 'localhost'; 
$db2['user'] = 'user2'; 
$db2['pass'] = 'user2'; 
$db2['dbName'] = 'database'; 

switch (true) { 
    case @mysql_select_db($db1['dbName'],mysql_connect($db1['host'],$db1['user'],$db1['pass'])): break; 
    case @mysql_select_db($db2['dbName'],mysql_connect($db2['host'],$db2['user'],$db2['pass'])): break; 
    default: echo 'Unable to connect to the database. God save us all!'; exit(); 
}