Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 17:00   #1
_KUL
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 96
По умолчанию Qt mysql корректно отключиться от сервера

Делаю:
Код:
    QSqlDatabase db  = QSqlDatabase::addDatabase("QMYSQL","mydb1");
    db.setHostName("10.10.10.10");
    db.setDatabaseName("10");
    db.setUserName("10");
    db.setPassword("10");
    db.open();

    QSqlQuery query(db);
    query.exec("SELECT 01 FROM 01 GROUP by 01");
    
    db.database("mydb1").close();
Лезу на сервак, делаю "покажи соединения с mysql"
И вижу, что моё соединение висит как TIME_WAIT

Вопрос: как корректно закрыть соединение? Что я делаю не так?
_KUL вне форума Ответить с цитированием
Старый 30.05.2012, 22:08   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2_KUL
это нормально. почитай основы сетей. после закрытия соединения серверный сокет еще ждет некоторое время. по умолчанию вроде 2 минуты.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 30.05.2012, 23:59   #3
_KUL
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 96
По умолчанию

Если я не делаю db.database("mydb1").close(); , то на сервере соединение ESTABLISHEN , потом я просто закрываю программу, проверяю соединения и ... и нет больше соединения! Как вот тогда послать сигнал, что я прекращаю работать с соединением?
_KUL вне форума Ответить с цитированием
Старый 31.05.2012, 00:24   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2_KUL
в деструкторе QSqlDatabase точно так же вызывается метод close, так что дело не в этом. возможно сервер сам решает, ожидать ли ему какое то время соединения или нет. в любом случае, это несущественно.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 31.05.2012, 02:20   #5
_KUL
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 96
По умолчанию

Да, пробовал к объекту и деструктор класса выполнять,тоже WAIT висит ... Но это ведь не правильно! Есть связка apache2+perl которая на mysql лезет и апач держит сессию мускул через перл, пока клиент активен с сессией в апаче, но потом же как то корректно разрушает! И EMS тоже при отключении все соединения рвёт! Ведь таким образом я 65536 раз сделаю реконнект, у меня 65536 соединений на ожидание будет висеть? Это ведь не есть хорошо!
_KUL вне форума Ответить с цитированием
Старый 31.05.2012, 02:56   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2_KUL
Цитата:
у меня 65536 соединений на ожидание будет висеть?
я тебе уже сказал, что TIME_WAIT активен некоторое время (по умолчанию 2 минуты вроде как), потом разрушается. да действительно, если у тебя высоконагруженная система, это может повлиять на новых клиентов, которым будет отказано в подключении, если забита вся очередь. и в таких системах с этим борются (например, уменьшая время ожидания).
еще раз говорю, для тебя это несущественно.

ПС. Подробнее о состоянии TIME_WAIT (и других) можешь почитать в книге Стивенсона
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 31.05.2012 в 03:05.
pproger вне форума Ответить с цитированием
Старый 31.05.2012, 04:23   #7
_KUL
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 96
По умолчанию

Хорошо, тогда вопрос по другому "как послать через инструментарий qt сигнла о разрыве соединения"?
_KUL вне форума Ответить с цитированием
Старый 31.05.2012, 16:44   #8
_KUL
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 96
По умолчанию

http://www.forum.crossplatform.ru/in...showtopic=8570
http://qt-project.org/forums/viewthread/17655/
Вроде понял ...
_KUL вне форума Ответить с цитированием
Старый 31.05.2012, 17:07   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

ну а я тебе о чем толковал?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 31.05.2012, 17:59   #10
_KUL
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 96
По умолчанию

На проджекте то по подробнее чуть рассказали и сразу понял
_KUL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кириллица не отображается корректно(PHP и MySQL) Frants Помощь студентам 1 12.03.2012 04:46
Запрос к MySQL не работает корректно Гламурная птица Помощь студентам 1 01.10.2011 19:43
Как правильно отключиться от Excel а из под Delphi. S_Yevgeniy Помощь студентам 5 13.10.2010 12:00
Нужно корректно отобразить данные из таблиц на сервере mysql Amabilis Помощь студентам 0 01.03.2010 20:40
Соединение и выборкак из базы MySql сервера magsim БД в Delphi 1 17.01.2010 12:27