Наши преимущества

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

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

имхо

Дополнение:
1. Я имел ввиду добавить непосредственно свою процедуру на сервер, я погляжу точно как примерно это сделать и напишу(в смысле что в функции написать:))
 
Последнее редактирование модератором:
1. Что мешает каждый раз, когда необходимо получить данные, опрашивать пользователей? зачем вообще хранить таблицу?
 
1. Что мешает каждый раз, когда необходимо получить данные, опрашивать пользователей? зачем вообще хранить таблицу?
Не понял?
Что значить опрашивать пользователей - не имея отдельной таблици для определения их имен ;-(((
 
Для van4ello:
'1. по таймауту опрашивать пользователя,не ответил,значит он отвалился'
А таймаут - это в MySQL прописывать надо (я так понимаю)? Не подскажите как?
Дело в том что если юзер есть то он 1, если нет то 0. Это в том случае если я просматриваю их присутствие - а если он пытается повторно зайти прога ему скажет что он уже есть.
 
Последнее редактирование модератором:
И ещё одно решение

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

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