Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.02.19;
Скачать: [xml.tar.bz2];

Вниз

Определение прервавшегося коннекта   Найти похожие ветки 

 
Laguna ©   (2011-11-09 12:01) [0]

Ситуация такая. БД находится на выделенном сервере. Разные пользователи подключаются к БД. Чтобы отследить кто работает в данный момент, из каждой программы пользователя делаю запись в некий dat- файл, расположенный на сервере на onCreate формы(во время открытия таблиц), говорящей о том, что конкретный пользователь работает. На onDestroy соответственно запись из dat-файла удаляю. Подозрение возникло в момент, когда якобы на связи находился долго один из пользователей. Зайдя на сервер по открытым файлам смотрю - все чисто, а запись в dat-файле осталась висеть. Получается, что у пользователя не отработало корректное закрытие формы(завис и т.д.). Каким образом сделать так, чтобы такие ситуации как то отлавливались? В данном случае Сервер - это просто хранилище файлов с расшаренным ресурсом.


 
clickmaker ©   (2011-11-09 12:23) [1]

а почему в dat-файл, а не в БД?

> Каким образом сделать так, чтобы такие ситуации как то отлавливались?
>

фиксировать время последней активности юзера, периодически проверять и рубить неактивные в течение какого-то времени сессии


 
Ega23 ©   (2011-11-09 12:48) [2]


> Каким образом сделать так, чтобы такие ситуации как то отлавливались?


Так, как это сделано, например, в PHP.
На сервер приходит некий запрос. Смотрим, есть ли в параметрах запроса SID (SessionID).
Если нет - создаём этот SID, выставляем ему время жизни (Now + timeout, например полчаса), заносим в список активных сессий.
Если есть - ищем этот SID в списке активных сессий. Если его уже нет - отказ от обработки запроса. Если он ещё есть - реинициализируем его время жизни.

Отдельно на сервере мониторим список активных сессий. Если нашлась какая-то, у которой время жизни < Now, то её выкидываем.

Если всё делать правильно, то задача не такая уж и тривиальная, надо аккуратно всё по потокам расписать.


 
Медвежонок Пятачок ©   (2011-11-09 13:03) [3]

Чтобы отследить кто работает в данный момент

Зачем?


 
Laguna ©   (2011-11-09 13:21) [4]

Сервер(ADS Local) выставляет ограничение на одновременное соединение 5 польз. Вот и нужно следить за рациональным использованием ресурса. Да сервер я описал выступает ка обычное хранилище, а не полноправный SQL-сервер. Касаемо сесий, то что то я ничеко для ADS не нашел. Там что то упоминалось, мол если работаем через BDE, а так ничего другого не нашел.


 
Медвежонок Пятачок ©   (2011-11-09 13:33) [5]

классическая иллюстрация
объективно стоит задача А
программист решает не ее а задачу Б
при этом пишет код, алгоритм которого ни к А ни к Б отношения не имеет.


 
Ega23 ©   (2011-11-09 13:36) [6]


> Сервер(ADS Local) выставляет ограничение на одновременное
> соединение 5 польз.


Одновременное соединение 5 пользователей, или одновременное обслуживание не более пяти коннектов к БД? Это разные вещи.


 
Медвежонок Пятачок ©   (2011-11-09 13:37) [7]

если надо "следить за рационалным использованием", то это подразумевает, что у тебя уже есть "рациональное использование" и ты за ним следишь.

вопрос: зачем следить за тем, что рационально?
чтобы что-то изменить в уже рациональном использовании ресурса?


 
Медвежонок Пятачок ©   (2011-11-09 13:42) [8]

Допустим, что ты успешно поборол эффект оборвавшегося коннекта и в дат файле у тебя все зашибись логируется невзирая ни на что.
что ты в нем увидишь?

ты в нем увидишь, что внутри файла никогда не бывает больше пяти юзеров одновременно.

Так их на сервере и так по любому не бывает больше пятерых одновременно потому что Сервер(ADS Local) выставляет ограничение на одновременное соединение 5 польз.


 
Laguna ©   (2011-11-09 13:56) [9]


> Одновременное соединение 5 пользователей, или одновременное
> обслуживание не более пяти коннектов к БД? Это разные вещи.
>

Если быть точнее, то не более 5 чел. могут открыть таблицу одновременно.

> Медвежонок Пятачок ©   (09.11.11 13:42) [8]
хм.. все так. Функция просмотра законнектившихся по идее подключена у контролирующего пользователя. Обрубил на корню... Я прям уже и забыл что хотел спросить... Короче "контролер" тоже пользуется теми же таблицами. Он посмотрит кто на связи и в каком подразделе. Подразделов 2 , в каждом из которых открываются свои таблицы. Если в первом разделе доступ закрыт(он посмотрел), то попытается войти во второй, если там меньше 5 чел. Скорее всего задача главнее должна отлавливать зависшие коннекты.


 
Ega23 ©   (2011-11-09 14:10) [10]


> Если быть точнее, то не более 5 чел. могут открыть таблицу
> одновременно.


Я из программы, залогинившись, могу открыть десять тредов, каждый с персональным коннектом.
Я могу написать AppServer, к которому будет коннектится стопицот пользователей, а он сам будет иметь всего один коннект к БД.


 
Sergey13 ©   (2011-11-09 14:49) [11]

Чем уж так хорош этот ADS Local, что ради него стоит терпеть такой геморрой?


 
Laguna ©   (2011-11-09 15:05) [12]


> Чем уж так хорош этот ADS Local, что ради него стоит терпеть
> такой геморрой?

Ну почему геморой? Когда отошел от BDE много СУБД пробовал. ADS больше всех понравился. Так и подружились. Не было бы проблем, если бы организация официально купила нормальную полную версию.


 
Медвежонок Пятачок ©   (2011-11-09 15:11) [13]

тем более что нормальная полная версия на целых пять коннектов


 
Laguna ©   (2011-11-09 16:35) [14]


> Медвежонок Пятачок ©   (09.11.11 15:11) [13]
> тем более что нормальная полная версия на целых пять коннектов


Молодец, круто подметил. Возьми орден на полочке.


 
RWolf ©   (2011-11-09 16:40) [15]

мне вот тоже интересно стало, чем этот ADS лучше, скажем, MSSQL или Firebird? я просто это название впервые слышу.


 
Anatoly Podgoretsky ©   (2011-11-09 17:12) [16]


> Laguna ©   (09.11.11 13:21) [4]

Может надо заплатить?


 
Anatoly Podgoretsky ©   (2011-11-09 17:13) [17]


> Если быть точнее, то не более 5 чел. могут открыть таблицу
> одновременно.

Они не дерутся за клавиатуру?


 
Anatoly Podgoretsky ©   (2011-11-09 17:16) [18]

Между прочим полноценный, бесплатный MS SQL Server Espress поддерживает 32000 коннектов


 
Laguna ©   (2011-11-09 17:32) [19]


> Между прочим полноценный, бесплатный MS SQL Server Espress
> поддерживает 32000 коннектов

Не спорю, было как то и  с MSSQL сталкивался. Но там свой гемор. Клиенты для обслужтвания базы тоже денег стоят :). ДА и если весь проет сейчас переводить на MSSQL, то нужно переписвать все, компоненты связующие менять и т.д. Может на следующем проекте стоит подумать заранее об использовании MSSQL.

> Может надо заплатить?

Это был бы лучший вариант, однако время сейчас тяжелое...


 
Anatoly Podgoretsky ©   (2011-11-09 17:46) [20]

Клиент обслуживания стоит 0 баксов.
Правильно не надо переводить, лучше помучиться с 5 коннектами.


 
Laguna ©   (2011-11-09 17:50) [21]


> Anatoly Podgoretsky ©   (09.11.11 17:46) [20]
> Клиент обслуживания стоит 0 баксов.Правильно не надо переводить,
>  лучше помучиться с 5 коннектами.

Можно узнать имя клиента?
Я юзал MSDE Manager 5 триальный. Работает, но постоянно триальные метки сносить нужно. Был еще один какой то но потерялся


 
Anatoly Podgoretsky ©   (2011-11-09 17:53) [22]

ssms можно загрузить отдельно, а можно в комплекте все три загрузки.
Вот MSDE штатного клиента не имел, но есть куча бесплатных.


 
Laguna ©   (2011-11-09 17:59) [23]

ssms - это что?


 
Плохиш ©   (2011-11-09 20:13) [24]

Manager уже больше 2х лет в поставке MS SQL Server Express идёт.


 
Ega23 ©   (2011-11-09 20:16) [25]


> Manager уже больше 2х лет в поставке MS SQL Server Express
> идёт.


ЕМНИП, с 2005 года


 
Плохиш ©   (2011-11-09 20:23) [26]


> Sergey13 ©   (09.11.11 14:49) [11]
>
> Чем уж так хорош этот ADS Local, что ради него стоит терпеть
> такой геморрой?

Тем, что bde ставить не нужно. А чтобы не иметь геморроя надо просто использовать инструмент по описанному назначению.
Если к жигулям плуг прикрепить, пахать всё-равно будет большой геморрой :-)


 
Плохиш ©   (2011-11-09 20:29) [27]


> Ega23 ©   (09.11.11 20:16) [25]

Ты точно про Express говоришь? В первой инсталлации 2008 ещё не было, на форумах много слёз было пролито о поиске отдельно менеджера.


 
Ega23 ©   (2011-11-09 20:48) [28]


> В первой инсталлации 2008 ещё не было

так 2005 же вроде как был?


 
Dennis I. Komarov ©   (2011-11-09 21:22) [29]


> так 2005 же вроде как был?

Он не в комплекте, но загрузить отдельно можно...


 
Anatoly Podgoretsky ©   (2011-11-09 22:02) [30]


> Плохиш ©   (09.11.11 20:29) [27]
>
> > Ega23 ©   (09.11.11 20:16) [25]
>
> Ты точно про Express говоришь? В первой инсталлации 2008
> ещё не было, на форумах много слёз было пролито о поиске
> отдельно менеджера.

Люди просто не умеют скачивать, качают тот дистрибутив, который меньше, вот потом и льют слезы.


 
Anatoly Podgoretsky ©   (2011-11-09 22:02) [31]


> ssms - это что?

Это то что ты спрашивал.


 
Laguna ©   (2011-11-10 00:31) [32]

Я понял, уже погуглил.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.02.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.004 c
15-1320279321
KilkennyCat
2011-11-03 03:15
2012.02.19
налоговый кодекс


15-1319778083
prestig
2011-10-28 09:01
2012.02.19
файл hosts


2-1320337446
Ant_
2011-11-03 19:24
2012.02.19
Runtime error 216 и процедура DBGridEhSelectionChanged


13-1127735614
MeF Dei Corvi
2005-09-26 15:53
2012.02.19
Получение информации о системе


2-1320746340
Eugene1501
2011-11-08 12:59
2012.02.19
Атрибут в XML





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский