2010-10-30 118 views
0

在PHP中有一種快速的方式來說,如果db1不可用連接到db2?連接到故障轉移數據庫在PHP

這是我現在在做什麼:

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

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

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

回答

1

如果連接失敗mysql_connecet返回false。

$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 
} 

與mysql_select_db類似的行爲(如果失敗,返回false)

0

當然....我覺得這是正確的發佈問題後:http://www.evolt.org/failover-database-connection-with-php-mysql

我落得這樣做:

$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(); 
}