急なアクシデントでDBサーバに接続出来なくなることがたまにある。
大体において本番環境はRAID組んでいたりで大丈夫なんだけど、開発環境ではそうもいかなかったりする。
そんなときに別のサーバに接続させる設定。
繋がるか(ソケット送れるか)否かでDBを変更する形。
$dbs = [
[ // 優先度1
'db' => 'mysqli',
'host' => '192.168.0.10',
'port' => 80,
'user' => 'user',
'pass' => 'pass',
'name' => 'db_a',
],[ // 優先度2
'db' => 'mysqli',
'host' => '192.168.0.100',
'port' => 3000,
'user' => 'root',
'pass' => '',
'name' => 'db_b',
],[ // 優先度3
'db' => 'mysqli',
'host' => '192.168.0.111',
'port' => 1000,
'user' => 'root',
'pass' => '',
'name' => 'db_a',
],
];
foreach($dbs as $db_key => $db_val){
$fp = @fsockopen($db_val['host'], $db_val['port'], $errno, $errstr, 1);
if (!$fp) { // 接続失敗
continue;
}
$set_db = $db_val; // 接続せしDB情報
break; // 抜ける
}
if (!isset($set_db)) {
exit('接続出来ぬ!');
}
///// ここからは自分の環境に合わせて書いたら良いもの /////
// 例としてPDO
$temp = $set_db['db'].':dbname='.$set_db['name'].';host='.$set_db['host'].';port='.$set_db['port'].';';
$dbh = new PDO($temp,$set_db['user'],$set_db['pass']);

コメント