確認方法を教えてください、PDO MySQLの接続エラーの前を走ってますクエリー?
質問
私のスクリプトにかなりriddledとフォプロセスに多くの異なる。き pcntl_fork()
と呼ばれ、すべてのMySQLの接続は失われます。がしかったクエリにPDO MySQLの接続を取得します。エラー "MySQL server has gone away"
.
問題はこのエラーみたちのクリスマスの過ごし方 PDO::errorinfo()
後に失敗したクエリを実行します。すればよいのでしょうかを検出できる場合、MySQLサーバ"にすることができます。"前のようにしている行を返します。そのように私のようなPDOラッパーが新しい接続機会がほとんど無かったな。
そのアイデア?
解決
ただ2つの方法により例することを目的とした一部の方法):
例1:
$sql = 'SELECT count(*) FROM `TABLE`;';
for ($i = 1; $i <= 2; $i++) {
try {
$nb = $pdo->query($sql)->fetchColumn();
if (is_int($nb)) {
// OK
break;
}
} catch (PDOException $e) {
//Oups
if ($i == 1) {
// First time ? retry
$pdo = new PDO($dsn, $user, $password);
} else {
// Second time, KO
$nb = "(unknown)";
echo 'PDO Connection failed: ' . $e->getMessage().'. ';
}
}
}
例2:
// check
try {
$pdo->query('select 1;')
//OK
} catch (PDOException $e) {
//Oups => reconnect
$pdo = new PDO($dsn, $user, $password);
}
// Should be good
$sql = 'SELECT count(*) FROM `TABLE`;';
$nb = $pdo->query($sql)->fetchColumn();
所属していません StackOverflow