Я использую PDO для получения данных с сервера SQL. Я заметил следующее: если SQL-сервер недоступен, для этого кода требуется довольно (относительно), чтобы вернуть исключение:
try {
$handle = new PDO($db_type . ':host='.$db_host.';dbname='.$db_name,$db_user,$db_pass);
// Tried using PDO::setAttribute and PDO::ATTR_TIMEOUT here
} catch(PDOException $e) {
echo $e->getMessage;
}
В случае MySQL для возникновения исключения требуется более 2 минут (SQLSTATE [HY000] [2003] Не удается подключиться к серверу MySQL на...) и 30 секунд на PostgreSQL (SQLSTATE [08006] [7 ] истекло).
Я попытался использовать PDO:: setAttribute и PDO:: ATTR_TIMEOUT, но он не работает. Я думаю, это имеет смысл, так как проблема возникает перед этим утверждением.
Есть ли способ установить тайм-аут для подключения к БД? 2 минуты /30 секунд кажется мне очень долгим для PDO, чтобы понять, что там ничего нет.
Я думаю, что видел, как это делается где-то, но не могу найти его снова для жизни.