Я запускаю сценарий PHP для подключения к MsSQL и выполнения длительной хранимой процедуры. Эта процедура ожидает идентификатор, который я передаю через этот скрипт. Я перебираю весь массив ID и вызываю эту процедуру. Однако для некоторых идентификаторов эта процедура требует много времени для запуска и времени ожидания. Я установил для свойства ATTR_TIMEOUT PDO значение 600 с. У меня есть все операторы PDO внутри блока try catch. Тем не менее, я получаю это необъяснимое исключение. Вот мой пример кода: (Пожалуйста, игнорируйте параметры new_statement. Я использовал здесь манекены. Он действительный и работает нормально)
try {
$statement = PDO::new_statement('DB', $sql, 0, false, false, [PDO::ATTR_TIMEOUT => 600]);
$this->execute($statement);
} catch (Exception $e) {
$logger->error("Error for ID: " . $id);
}
Это прекрасно работает для большинства идентификаторов. Это не работает для некоторых длительных идентификаторов. Если при выполнении запроса возникнет проблема TIMEOUT, я ожидаю, что ошибка будет зарегистрирована. Однако я вижу это исключение:
Неустранимая ошибка PHP: Uncaught HY000
["HY000", 20003, "Время подключения адаптивного сервера истекло [20003] (уровень серьезности 6)
Может кто-нибудь, пожалуйста, помогите мне с этим.