Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.19;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.011 c
2-1320826326
I_D
2011-11-09 12:12
2012.02.19
Перевод проекта с Delphi 7 в Delphi XE. Проблема с ShortString


15-1319915898
DVM
2011-10-29 23:18
2012.02.19
Забавная картинка


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


6-1250621874
cerber
2009-08-18 22:57
2012.02.19
Отправить Ctrl+A, Ctrl+V в окно webbrowser


6-1219582346
-=Le][=-
2008-08-24 16:52
2012.02.19
Как узнать полное имя домена?