powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрет на запуск двух программ одним пользователем
25 сообщений из 51, страница 1 из 3
Запрет на запуск двух программ одним пользователем
    #39350353
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер
Пожалуйста оцените реализацию запрета на запуск двух программ одним пользователем. Задача такая - пользователь не может подключится к базе из одной программы,если он уже подключен к базе. Раньше была реализация на триггере на коннект с использованием mon$attachments, но это очень сильно нагружало базу и в определенный момент отправилось на свалку. Теперь решение я вижу так - один триггер на коннект делает запись в таблицу о подключении юсера - имя пользователя, время подключения и имя программы (второе для мониторинга, третий для отладки), а перед этим проверяет - есть ли уже такая запись в таблице, если есть - проверяет есть ли этот усер в таблице с исключениями, если нет - выдает эксепшен.
Код такой:
Таблица с коннектами:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE ZM_CONNECT (
    ID_USER       VARCHAR(10),
    TIME_CONNECT  DATE,
    PROCESS       VARCHAR(20)
);
CREATE INDEX ZM_CONNECT_IDX1 ON ZM_CONNECT (ID_USER);



Таблица с исключениями:
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE ZM_CONNECT_2 (
    ID_USER  VARCHAR(10)
);

CREATE INDEX ZM_CONNECT_2_IDX1 ON ZM_CONNECT_2 (ID_USER);



Триггер на коннект:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE OR ALTER trigger zm_connect
active on connect position 0
as
begin
--проверяем та ли эта программа
if (right(RDB$GET_CONTEXT('SYSTEM', 'CLIENT_PROCESS'), 12) = 'IBExpert.exe') then
-- проверяем есть ли запись в таблице подключений
if (exists(select 1 from ZM_CONNECT where ID_USER = current_user)) then
-- если есть - смотрим, есть ли исключения на данного пользователя
    begin
if (not exists(select 1from ZM_CONNECT_2 where ID_USER = current_user)) then
-- нету, лови эксепшен
        exception DB_CONNECT;
    end
-- если программа та, но подключения нет ещё - вносим данные в таблицу подключений
    else
    begin
      insert into ZM_CONNECT (ID_USER, TIME_CONNECT, PROCESS)
      values (current_user, current_timestamp, right(RDB$GET_CONTEXT('SYSTEM', 'CLIENT_PROCESS'), 12));
    end
end



Триггер на дисконнект:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE OR ALTER trigger zm_disconnect
active on disconnect position 0
AS
begin
  delete from ZM_connect where id_user = current_user;
end

...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350356
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarРаньше была реализация на триггере на коннект с использованием mon$attachments, но это очень сильно нагружало баз

уверен? У тебя в системе постоянно коннект-дисконнект что ли?

Код обладает одним недостатком, если отключение произошло нештатным способом (обрыв сети и т.д.), то запись о подключенном юзере останется навсегда в БД, и этот пользователь больше не подключится к БД вообще.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350358
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

велосипед, не работает (Денис уже сказал).
По уму, люди делают так. Монитор на компе, каждый комп скидывает информацию по запросу на некий агрегатор, по tcp. Агрегатор выдает информацию. И может приказать, какой процесс этот монитор должен грохнуть, например.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350359
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисGallemarРаньше была реализация на триггере на коннект с использованием mon$attachments, но это очень сильно нагружало баз
уверен? У тебя в системе постоянно коннект-дисконнект что ли?

Уверен
Я не так давно даже писал про это http://www.sql.ru/forum/1236886/o-grustnom?hl=
Симонов Денисзапись о подключенном юзере останется навсегда в БД, и этот пользователь больше не подключится к БД вообще.
Это уже не мои проблемы, добавлю управление процессом в веб или в 1С, это уже пусть техподдержка или консультанты по софту разруливают. Когда всё через mon$attachments было при обрыве или перезагрузке терминального сервера там записи оставались, убирали через 1С без особых проблем.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350360
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvGallemar,

велосипед, не работает (Денис уже сказал).
По уму, люди делают так. Монитор на компе, каждый комп скидывает информацию по запросу на некий агрегатор, по tcp. Агрегатор выдает информацию. И может приказать, какой процесс этот монитор должен грохнуть, например.
Что за монитор?
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350366
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

ну так ты проблемы своего решения спрашивал, тебе их показали.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350370
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. использовать его можно, главное понимать возможные проблемы с нештатными отключениями ?
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350374
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar... главное понимать возможные проблемы с нештатными отключениями ?
Главное - понимать, что с таким быдлокоденгом и гуанамореализейшен - долго держать не будут...
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350377
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЧто за монитор?
программа такая, самописная, которая мониторит состояние конкретных процессов.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350406
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvGallemarЧто за монитор?
программа такая, самописная, которая мониторит состояние конкретных процессов.
Усложняете. Проще триггер повесить, чтобы не давал два раза запускать приложение.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350407
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneGallemar... главное понимать возможные проблемы с нештатными отключениями ?
Главное - понимать, что с таким быдлокоденгом и гуанамореализейшен - долго держать не будут...
Мой быдлокодинг ждут как невеста первого раза :) Плакали и ждали, когда я из отпуска выйду.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350409
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarМой быдлокодинг ждут как невеста первого раза :) Плакали и ждали, когда я из отпуска выйду.
Да-да, йожики кололись, но кактус... самзнаешьчего. :-)
Но от это самзнаешьчего гуанамой быть не перестало.
- Ы?
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350410
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneGallemarМой быдлокодинг ждут как невеста первого раза :) Плакали и ждали, когда я из отпуска выйду.
Да-да, йожики кололись, но кактус... самзнаешьчего. :-)
Но от это самзнаешьчего гуанамой быть не перестало.
- Ы?
Ы-ы-ы
В чем гуано-то? Новичка любой обидеть может,вот нет чтобы показать в чем неправ.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350413
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvGallemarЧто за монитор?
программа такая, самописная, которая мониторит состояние конкретных процессов.
Да есть и не самописная, но она не делает то,что я хочу
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350414
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЫ-ы-ы
В чем гуано-то? Новичка любой обидеть может,вот нет чтобы показать в чем неправ.
Каждый день по 500 раз бъёшься головом о притолоку и вкурить не магешь - чё, вкуды и пачём?
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350417
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne,ага
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350420
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar, навеяло - тынц
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350546
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большая просьба - объясните что не так в коде. Альтернативный вариант невозможен,т.к. программа не моя и модернизировать я могу только базу.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350557
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar объясните что не так в коде.
- Фсё! От сих и посисих.
Так уже ответили в тынц .
- Чего не понятно?
То, правильно спроектированная и грамотно реализованная система должна ИСКЛЮЧАТЬ любое "ручное" разблокирование аккаунтов, даже такому лосю лохастому как мну, видно из далека. :-)
Или ты думаешь на туевой хуче Инет-форумов одмины с сисопами и мордотрахтерами сидят и ручками разблокируют юзеров?
- Вывод?
Иди и учи матчасть.
Хотя бы тот же какой-нить древниеубогей ПыхПых-Пхорум, писанный для сирых узеров и убогих "двешков". :-)
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350559
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne- Вывод?
Иди и учи матчасть.

Ничего ты не понял :) Как и другие.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350561
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarНичего ты не понял :) Как и другие.
- Да-да, один ты у нас такой задвинутый разраб... :-)))

С такими картинками, как ты запостил, у меня был бы уволен "здесь и чичас" с начетом на ЗП. :-)
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350562
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne,с которой, с первой или второй?
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350564
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

не должен никакой человек сидеть и карпеть над твоей системой следя не завис ли там какой-нибудь пользователь.
Система должна облегчать пользователям жизнь, а у тебя она получается её усложняет как минимум товарищу надзорному.
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350566
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarDi_LIne,с которой, с первой или второй?
- Со всеми тремя!
Хотя и первой, в двумя IF и тремя ELSE , гордо названной "программным кодом", достаточно. :-))))
...
Рейтинг: 0 / 0
Запрет на запуск двух программ одним пользователем
    #39350567
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

для начала подготовь товарища надсмотрщика к тому, что юзеры будут кидать в него тапки, каждый раз когда не смогут подрубиться к системе. Когда товарищу надсмотрщику это надоест, он придёт забрасывать тапками тебя.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрет на запуск двух программ одним пользователем
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]