Ведение журнала событий ?

Регистрация
9 Дек 2004
Сообщения
6
Реакции
0
Credits
8
Delphi7+MySQL+MyDAC
Задача:
1. Ведение журнала активных пользователей (приблизительно представляю так: в таблице users прописать поле online в котором 0 или 1 активный пользователь или нет) но вопрос в случае аварийного выпадения юзера - как обнулить это поле?
2. Таблица events где хранится: (Добавлено, Удалено, Редактировано) т.е.хочу реализовать журнал событий типа в 1с (Пользователь "Пупкин" "редактировал/добавил/удалил" запись "Клиента N"). Где лучше хранить журнал - в тойже базе где и все таблици - или лучше писать текстовый файлик?
 

van4ello

Местный
Регистрация
12 Ноя 2005
Сообщения
69
Реакции
14
Credits
110
1. по таймауту опрашивать пользователя,не ответил,значит он отвалился
2. лучше писать отдельной базой + отдельную оболочку для просмотра этого файла

имхо

Дополнение:
1. Я имел ввиду добавить непосредственно свою процедуру на сервер, я погляжу точно как примерно это сделать и напишу(в смысле что в функции написать:))
 
Последнее редактирование модератором:

Wern

Турист
Регистрация
10 Янв 2007
Сообщения
21
Реакции
2
Credits
42
1. Что мешает каждый раз, когда необходимо получить данные, опрашивать пользователей? зачем вообще хранить таблицу?
 
Регистрация
9 Дек 2004
Сообщения
6
Реакции
0
Credits
8
1. Что мешает каждый раз, когда необходимо получить данные, опрашивать пользователей? зачем вообще хранить таблицу?
Не понял?
Что значить опрашивать пользователей - не имея отдельной таблици для определения их имен ;-(((
 
Регистрация
9 Дек 2004
Сообщения
6
Реакции
0
Credits
8
Для van4ello:
'1. по таймауту опрашивать пользователя,не ответил,значит он отвалился'
А таймаут - это в MySQL прописывать надо (я так понимаю)? Не подскажите как?
Дело в том что если юзер есть то он 1, если нет то 0. Это в том случае если я просматриваю их присутствие - а если он пытается повторно зайти прога ему скажет что он уже есть.
 
Последнее редактирование модератором:

sput

Турист
Регистрация
10 Окт 2006
Сообщения
15
Реакции
2
Credits
12
И ещё одно решение

Пусть юзер каждую минуту пишет в особую таблицу текущее время сервера. Не делавшие 2 мин такой записи юзеры считаются погибшими.
 
D

disas

Пусть юзер каждую минуту пишет в особую таблицу текущее время сервера. Не делавшие 2 мин такой записи юзеры считаются погибшими.
Не самое лучшее предложение в плане оптимизации.

1. Начнем с конца: таблицу events лучше хранить в базе т.к. файл это в данном случае тоже базы только аскетичная. Зачем менять нормальную базу на аскетичную?
2. Активность пользователей можно определять так: каждые 10 минут на сервере запускается прога: для всех активных пользователей просматривается последний event. Если последнее событие было более NNN минут назад - пользьзователь не активен.
 

clubreseau

Турист
Регистрация
25 Окт 2009
Сообщения
5
Реакции
0
Credits
10
Пусть юзер каждую минуту пишет в особую таблицу текущее время сервера. Не делавшие 2 мин такой записи юзеры считаются погибшими.
 

heath

Турист
Регистрация
12 Янв 2010
Сообщения
6
Реакции
0
Credits
12
Клиентская программа периодически делает запись ID пользователя и время сервера в таблицу БД. Поле, куда записывается ID, должно быть уникальным. После нормального завершения клиент удаляет эту запись. На стороне сервера периодически запускается процедура, которая удаляет "просроченные" записи. Надо только придумать как запускать эту процедуру.
 

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
По поводу п.1 есть хорошее решение, правда для SQL Server: Для просмотра ссылки Войди или Зарегистрируйся

Может быть удастся для MySQL переделать. Или это повод перейти на MSSQL :)
 

dimamir

Местный
Регистрация
28 Июл 2006
Сообщения
9
Реакции
3
Credits
16
Посмотри MsgCommunicator - наверняка решишь все свои проблемы

Для просмотра ссылки Войди или Зарегистрируйся
Сам компонент найдешь поиском на этом форуме....