Мне бы хотелось, чтобы мой PHP-скрипт (использующий PDO) обнаруживал, находится ли целевая база данных в процессе восстановления, кроме ожидания нескольких минут ответа от сбойного соединения.
MyКод подключения к базе данных в конечном итоге возвращает приведенное ниже сообщение, если база данных восстанавливается, но это происходит из-за сбоя подключения и для ответа требуется несколько минут, когда это происходит. Поиск в StackOverflow и Google, похоже, не находит ничего подходящего мне, равно как и поиск по документации PHP.
function getParameterizedPDOConnection($host = false, $overrideOptions = []) {
include(INCLUDE_DIR . "/itrain.config.php");
$host = strtolower($_SERVER["HTTP_HOST"]);
if (count($overrideOptions) > 0) {
$configOptions["host"][$host] = $overrideOptions;
}
$sthUserName = $configOptions["userName"];
$pwd = $configOptions["pwd"];
$addr = $configOptions["host"][$host]["addr"];
$db = $configOptions["host"][$host]["db"];
try {
$pdo = new PDO("sqlsrv:Server=$addr;Database=$db;ConnectionPooling=0", $sthUserName, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT));
return($pdo);
} catch (PDOException $e) {
return "Database connection failure: " . $e->getMessage();
}
}
Возвращает: "42000", 927, "[Microsoft] [Драйвер ODBC 13 дляSQL Server] [SQL Server] База данных «Рабочая сила» не может быть открыта. Она находится в процессе восстановления.