Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отваливается сервер MySQL работа через MFC  (Прочитано 7951 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Boriska
Помогающий

us
Offline Offline

« : 30-05-2014 08:04 » 

Привет коллеги. Подскажите пожалуйста как решить такой проблем.

Я конекчусь к базе через класс MFC и храню коннект.
Программа по внешнему событию сохраняет данные в базе MySQL.
И все хорошо пока события приходят. Но если события долго нет (сутки)
появляется характерное окно с сообщением что MySQL отпал.
Как правильно выяснить что соединения уже нет и отреагировать на это.
А если бд удаленная то это понятное дело случается чаще.
Хотелось бы соединение хранить чтобы не терять быстродействие. И
возобновлять его по нужде.
« Последнее редактирование: 30-05-2014 09:13 от Boriska » Записан
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« Ответ #1 : 30-05-2014 10:12 » 

Привет коллеги. Подскажите пожалуйста как решить такой проблем.

Я конекчусь к базе через класс MFC и храню коннект.
Программа по внешнему событию сохраняет данные в базе MySQL.
И все хорошо пока события приходят. Но если события долго нет (сутки)
появляется характерное окно с сообщением что MySQL отпал.
Как правильно выяснить что соединения уже нет и отреагировать на это.
А если бд удаленная то это понятное дело случается чаще.
Хотелось бы соединение хранить чтобы не терять быстродействие. И
возобновлять его по нужде.
Насколько я помню с MySQl способов конекта дофига и больше.Можно конектится через odbc можно использовать библиотеки Connector/C (libmysqlclient)
или Connector/C++. Фишка в чем нельзя постоянно хранить коннект и не обращаться к базе,база тебя тупо отключит.Решение очень простое изредка подергивать коннект.Каким образом зависит от метода коннекта.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 30-05-2014 14:16 » 

В нативном API есть функция mysql_ping - проверяет активность ранее установленного подключения и при необходимости переподключается. Другой способ: выставить на сервере большой таймаут, но не рекомендую. Еще можно временами запрашивать на сервере какую-нибудь несущественную информацию.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Boriska
Помогающий

us
Offline Offline

« Ответ #3 : 30-03-2015 08:47 » 

Спсб
Записан
darkelf
Молодой специалист

ua
Offline Offline

« Ответ #4 : 30-03-2015 10:39 » 

Тут советуют выставить настройки для сессии, правда тогда в любом случае раз в сутки (ну или раз в 24 дня, если выставить тайм-аут по максимуму) придётся обращаться к БД. Странно, что нет возможности использовать tcp-шный keepalive.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 30-03-2015 21:26 » new

http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_wait_timeout
До 365 дней. Но под виндой только 24 дня.

Если читать внимательно, можно увидеть, как объявить подключение интерактивным (CLIENT_INTERACTIVE) — для него предел устанавливаемого лимита не указан.
« Последнее редактирование: 30-03-2015 21:32 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines