db接続パラメータは、必要なすべてのページに含まれる単一のファイルに設定されています。接続ファイルそう...と呼ばれるconnect.phpのようになります。pdo db接続が存在しない場合のエラー処理?
$db_host = '111.111.111.111';
$db_database = 'test';
$db_user = 'test';
$db_pass = 'test';
$db_port = '3306';
//db connection
try {
$db = new PDO("mysql:host=$db_host;port=$db_port;dbname=$db_database;charset=utf8", $db_user, $db_pass,
array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //PDO::ERRMODE_SILENT is default setting
PDO::ATTR_PERSISTENT => false //when true
)
);
}
catch(PDOException $e) {
error_log("Failed to connect to database (/connect.php): ".$e->getMessage());
}
私は、このファイルが含まれており、このようなもので終わるデシベルで物事を行う必要があります... example.php呼ば:
require $_SERVER['DOCUMENT_ROOT'].'/assets/functions/connect.php';
$stmt = $db->prepare("
SELECT
accounts.account_id,
FROM accounts
WHERE accounts.account_key = :account_key
");
//bindings
$binding = array(
'account_key' => $_POST['account_key']
);
$stmt->execute($binding);
//result (can only be one or none)
$result = $stmt->fetch(PDO::FETCH_ASSOC);
//if result
if($result)
{
// result found so do something
}
ときどきデータベース接続が失敗します(更新、シャットダウン、それは何でも)... PDOExceptionが発生すると、try/catchが正常に動作し、私の中にエントリが追加されますエラーログはそう言っています。
私のexample.phpに 'check'を追加すると、接続がない場合でもデータベース作業は行われません(接続スクリプトを含むインクルードファイルが接続)。どのように私はこれについて行って、そうするための好ましい方法は何ですか?
$ stmtエントリの前に$ dbをテストする正しい方法がわかりません。それが設定されていない場合、接続を再試行する方法がありますか?
私はそれをそのまま残すことができ、問題がないことを認識しています。データベースクエリ以外は失敗し、コードは実行されませんが、このときエラーログに別のエントリを追加するなど、起こる
これらのすべてを例外処理コードで実行します。 – Shadow
しかし、接続例外処理で、DB接続がダウンしていることを示すフラグを設定することもできます。ほとんどの場合、xouは完全にここでの処理を止めるでしょう、それがうまくいかないとスクリプトを続行することに意味はありません。 – Shadow