On-line: Andrey, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 5901
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.06.18 18:51. Заголовок: Кто вошел в программу / Who logged in application ?


Что то достали меня юзера при режиме обновления баз программы.
Т.е. нужно одному юзеру войти в программу и обновить базы (если есть обновление) в монопольном режиме.
А они стали тупить, других юзеров не выгоняют из программы.

Программа работает в сети (файл-серверный вариант) или на серверном компе (сервер-терминалов вариант).

И ещё появилась БОЛЬШАЯ потребность - определить сколько юзеров в программе,
т.е. сделать запрет запуска программы, если кол-во рабочих станций больше заданного параметра (допустим разрешён запуск 5 программ в сети или на сервере-терминалов).

Я знаю и применяю у себя такой простой вариант: через логин-файл-журнал входа в программу.
DBF-файл открываю в многопользовательком режиме и записываю запись при входе нового пользователя.
При выходе из программы - удаляю пользователя.
Недостаток этого варианта - если комп "отвалиться" от сети - ушедший юзер будет числиться подключённым к программе.

Можно сделать опрос допустим через семафорный файл, но тогда нужно допустим каждые 30-40 сек. опрашивать наличие семафорного файла по указанному пути. Это будет не слишком затратной операцией ?

Почитал про Мультивещание - https://ru.m.wikipedia.org/wiki/%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%B2%D0%B5%D1%89%D0%B0%D0%BD%D0%B8%D0%B5
или http://linkmeup.ru/blog/129.html
Интересно, но сколько кода писать нужно....

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

Кто и какие варианты делает для опроса из своей программы - "Кто вошел в программу" ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]





Пост N: 590
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 05.06.18 19:51. Заголовок: В одной задаче испол..


В одной задаче использовал журнал (локирование строки и признак нормального выхода)
В другой вешал сокет на сервер и юзера, при открытии своей проги, коннектились с этим сокетом. А уж он сам разбирался кто как отвалился. Правда я это делал для юзеров, которые обращались к серверу с таблетки по внешнему IP

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1837
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.06.18 21:04. Заголовок: Andrey пишет Кто и к..


Andrey пишет
 цитата:
Кто и какие варианты делает для опроса из своей программы - "Кто вошел в программу" ?


LetoDb - переменные памяти.
Добавь в свою программу LetoDb только для этих дел (регистрация пользователей в переменных памяти и контроль кол-ва) ,
потом, со временем, исп. Lock\Unlock команды сервера для замены версии\баз ...
Leto, как понимаю будет локальным

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1838
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.06.18 21:11. Заголовок: PS Можешь контроль в..


PS
Можешь контроль входа user, password перевести на LetoDb - тогда больше 5 (?) не подконнектятся и будет тебе ... ну что то будет

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5902
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.06.18 22:35. Заголовок: SergKis пишет: Leto..


SergKis пишет:

 цитата:
LetoDb - переменные памяти.


К сожалению не могу использовать это. Не у всех стоит модуль передачи баз по LetoDb.
Большая часть вообще использует локальный вариант - одну программу.

Хотя в этой идее что-то есть !
Буду думать...

Если на главное окно программы повесить таймер и каждые 60 сек.
записывать (код оператора+имя оператора) в DBF-файл, то это сильно будет напрягать систему ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6839
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.06.18 22:58. Заголовок: Andrey пишет: запис..


Andrey пишет:

 цитата:
записывать (код оператора+имя оператора) в DBF-файл, то это сильно будет напрягать систему ?


Не попробуешь , не узнаешь.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1839
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.06.18 04:45. Заголовок: Andrey пишетэто силь..


Andrey пишет
 цитата:
это сильно будет напрягать систему ?


Посмотри еще раз пример из темы GUI "Вылет из программы" http://my-files.ru/gkupot
Жми кнопку Start пока не надоест и смотри как работает перемещение, выбор даты в календаре.
На каждом окне два таймера на 200 и 1000 миллисекунд

 цитата:
Не у всех стоит модуль передачи баз по LetoDb.


Ты не внимательно прочитал, я предложил ставить leto local у программы, не связанной с существ. передачей данных.
Исп. для коннекта и контроля user-ов, смены версии, базы использовав Lock\Unlock сервера (блокируя работу)
Плюс можно организовать сообщения user-ам о приостановке работы на время тех. работ

 цитата:
записывать (код оператора+имя оператора) в DBF-файл


Добавь дату, время для актуальности, что бы понимать, что не отвалился\подвис user

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 627
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 06.06.18 16:02. Заголовок: Использую простейший..


Использую простейший вариант: в папке с данным \\srvr\data создал каталог \logs, куда при старте программы каждый ее экземпляр скидывает текстовый файл-семафор с диагностической инфой.
Файл назван по имени рабочей станции, например: work_056.log - т.е. признак того, что программа номер 056 запущена.

Фоновый процесс, запущенный по hb_IdleAdd() обновляет его раз в минуту: внутрь пишется код текущего юзера, всякие MEMORY(x), стек вызовов через PROCNAME(x) / PROCLINE(x) и тп фигню.

В случае корректного выхода и/или контролируемого Run Time Error - файл удаляется.
В случае зависа/reset/выдергивания шнура питания из UPS - файл остается, но и дата/время файла больше не обновляется.

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

Кроме этого, на время обслуживания в этом-же каталоге появляется семафор stop_325.log - это значит, что машина 325 делает "что-то" такое с базой (например, реиндекс), что дальнейший вход юзеров невозможен: текущих обзваниваем, обходим, пишем смс, а новые - ждут разрешения на вход в БД до тех пор, пока в каталоге есть файл stop_*.log. Внутри него обычно пишется причина: например, восстановление после аварии, реиндекс, и планируемое время завершения обслуживания и имя юзера, который выполняет обслуживание. Ожидающий разрешения юзер это "видит" в сообщении и может использовать свое рабочее время более рационально. Например, за это время позвонить нескольким клиентам.

Надежно работает уже более 20 лет. Думал сначала "модернизировать" и хранить все в одной табличке согласно записям, но с файлами произвольного формата мне оказалось удобнее работать.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7925
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.01.24 20:18. Заголовок: Sergy Можешь показа..


Sergy
Можешь показать кусочек лога ?
Тоже продумываю эту тему

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 6
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет