急なアクシデントで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']);
コメント