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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2018, 09:16   #1
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию Получение сообщения о новой записи

Делаю небольшую программу (клиентская+серверная часть). Используют программу пользователи и администраторы домена.

У пользователей есть возможность добавлять заявки, у администраторов возможность просматривать и закрывать их. У меня сейчас реализована функция оповещения о новых заявках по следующему алгоритму:

1) Пользователь добавляет новую заявку, ей в поле статус присваивается значение 0 - непрочитанная.

2)Каждые 60 секунд (по таймеру) происходит проверка: является ли клиент администратором домена (проверка осуществляется хранимой процедурой на сервере) - если является:
  • SQL-запросом просматриваем все непрочитанные заявки (со значением 0).
  • Выводим для администратора сообщение о новой заявке.
  • Присваиваем заявке статус прочитанной (даем записи значение 1).

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

Вопрос следующий: можно ли улучшить данный алгоритм или может быть нужно действовать по-другому? Можно ли как-то синхронизировать таймеры у всех администраторов?

Последний раз редактировалось Ericnex; 22.06.2018 в 09:19.
Ericnex вне форума Ответить с цитированием
Старый 22.06.2018, 09:50   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Можно статус прочтения вообще не иметь, а сделать еще табличку вида:
ДопТаблица (ИдЗаявки, ИдАдмина) и выбирать не прочитанные, например, запросом

Код:
SELECT Z.ИдЗаявки
  FROM Заявки Z LEFT JOIN ДопТаблица S ON S.ИдЗаявки=Z.ИдЗаявки AND S.ИдАдмина=:Id
  WHERE S.ИдАдмина IS NULL
После прочтения в дополнительной таблице создать соответствующую запись. Тогда и через год будут видны не прочитанные заявки для конкретного админа

add Если появится новый админ, то для него не прочитанными будут все существующие заявки )) Можно огульно в этом случае скриптом дополнить для него табличку ДопТаблица. Или усложнить запрос, добавив, например, условие по дате, тогда не за всю историю, а начиная с какой-то даты будет выводится список не прочитанных
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 22.06.2018 в 10:02.
Аватар вне форума Ответить с цитированием
Старый 22.06.2018, 11:09   #3
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

Дело еще в том, что у меня нет отдельного справочника "Админы". Я узнаю является ли пользователь администратором домена при запуске программы через хранимую процедуру.
Ericnex вне форума Ответить с цитированием
Старый 22.06.2018, 11:30   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Сетевое имя то у него есть. Его и используй вместо ИдАдмина
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение окна заголовка на новой строке CloudStrife C# (си шарп) 16 15.12.2015 12:43
TICQClient получение сообщения Rec0il Общие вопросы Delphi 3 31.03.2013 21:34
Получение новой матрицы прибавлением к элементам Petyu C++ Builder 5 16.03.2013 15:30
Получение сообщения idUDPClient virtuhay266 Работа с сетью в Delphi 1 07.12.2011 08:33
IRC получение сообщения jone Работа с сетью в Delphi 4 27.04.2009 21:20