Хобрук: Ваш путь к мастерству в программировании

Тайм-аут подключения Delphi FireDAC или принудительное прерывание процесса установления соединения

Кто-нибудь знает, есть ли способ принудительно прервать соединение, которое устанавливается в фоновом потоке? Или хотя бы определить время ожидания подключения?

Пара заметок

  1. Оставить фоновый поток запущенным и просто забыть об этом — не вариант.
  2. Просмотрел исходный код и доступные свойства - не смог найти ничего, связанного с вопросом.

  • Это настройка, зависящая от СУБД. Более того, если функция подключения API драйвера блокируется, вы мало что можете сделать для ее завершения (только оставить поток для завершения такого вызова или принудительно убить его с возможными последствиями). Но многие СУБД предлагают для этой цели LoginTimeout видов параметров. 04.07.2018
  • Здравствуйте, Виктория, спасибо за комментарий. Да так прикинул. Однако я нашел обходной путь. В основном я создал собственное TCP-соединение с сервером базы данных, чтобы проверить, доступен ли сервер. Обычно я мог бы оставить поток запущенным, но драйвер Firebird блокируется и ожидает завершения ожидающего соединения и не позволяет установить дополнительное соединение, пока выполняется предыдущее соединение. 06.07.2018
  • Да, потому что это блокирующий вызов. Но конкретно Firebird, похоже, реализует параметр connect_timeout (точнее, isc_dpb_connect_timeout). Укажите его в IBAdvanced параметре соединения. Если бы вы сказали, что используете Firebird, я бы ответил вам довольно быстро. 06.07.2018
  • @RelateX Было бы полезно, если бы вы включили то, что уже пробовали. Многие люди приходят сюда и постоянно задают такие общие вопросы. Вам повезло, что кто-то заметил это, иначе оно было бы в конечном итоге удалено. Редактирование некоторых сведений о том, что вы пытаетесь сделать, также может помочь. 09.07.2018

Ответы:


1

Имейте в виду, что FireDAC (библиотека доступа к данным) описывает только технологию Delphi для упрощения доступа к данным в нескольких базах данных. Чтобы определить тайм-аут для вашего соединения, соединение с базой данных должно его поддерживать. Вот описание тайм-аута соединения, например, в межбазовом соединении через FireDAC. http://docwiki.embarcadero.com/Libraries/Berlin/en/FireDAC.Phys.IBBase.TFDIBService.ConnectTimeout

04.07.2018
  • Спасибо fisi-pjm. Я знаю о чем вы говорите и читал статью. Цель вопроса заключалась в том, чтобы проверить, есть ли какое-то свойство или функция, которые можно было бы использовать для достижения этой цели, которую я пропустил. P.S. В статье речь идет о компонентах FireDAC IB Service, а не о фактическом подключении к IB, с помощью которого вы можете выполнять запросы и т. д. Насколько мне известно, компонент подключения FireDAC и ссылка на драйвер IB не содержат свойства тайм-аута подключения. Что опять же было первоначальным вопросом. 04.07.2018
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..