Fórum Limitar quantidade de usuários no sistema #379296

11/06/2010

0

Prezados amigos do fórum,

A dúvida é a seguinte:
Como limitar a quantidade de usuários que usam o sistema na rede?

Já vi outros tópicos em alguns fóruns que acharam que estavam com a solução... mas ainda restou uma dúvida:

A idéia seria criar um arquivo, e com esse arquivo armazenar qdo o usuário entrasse no sistema.
Então sempre q se logasse um usuário, se criaria um novo registro onde gravaría-se o usuário e a data e hora;

POIS BEM!

A idéia é até boa. então qdo se atingisse o limite, nao seria permitido que outro usuário usasse o sistema, até que algum usuário logado saísse do programa, e aí se apagaria o registro no arquivo.

Porém teríamos 1 pequeno problema que ninguem diz como resolver:
E se o sistema travasse e o usuário nao pudesse sair dele normalmente??
ou ainda: Se o windows travar e o registro também ficar gravado???

O registro não seria apagado, e portanto, o raciocínio se perde todo...


Alguém teria a solução e poderia nos ajudar nessa idéia??

Wagner Fernandes

Wagner Fernandes

Responder

Posts

11/06/2010

Thiago Cruz

Bom dia!   para vc poder limitar a qunatidade de usuarios no sistema tem duas opçoes   1 - fazer o controle pelo banco. Como: crie uma tabela de log de usuario e faz a verificação todo vez q um usuario logar 2 - Utilizar sistema em 3 camadas. Como: o sitema servidor faz a contagem de usuario, todo vez q o usuario logar gravar um log no servidor.    
Responder

Gostei + 0

11/06/2010

Wagner Fernandes

Thiago,

Mas é exatamente esse o problema de utilizar a opção 1.
Criando a tabela e fazendo o log.
O problema é se a aplicação ou o computador travar, aí o usuário nao se desconecta, e como o controle é para a quantidade de pessoas usando o sistema, ele já vai estar logado, e se outro usuário entrar ele vai ficar prendendo a vez de outro usuario.

Alguém pode passar uma idéia da lógica então?

Abraço a todos..
Responder

Gostei + 0

11/06/2010

Fábio Cruz

Vc trabalha com servidor de aplicação?

Acho que isso se resolveria se vc tivesse um server (em algum servidor do Cliente) que ficasse conversando com algum client (maquina do usuário) no momento que essa comunicação fosse interrompida, ele liberaria uma licença para uso.

Isso ajudaria também para barrar o usuário instalar o programa em algum outro terminal não autorizado por vc.
Responder

Gostei + 0

12/06/2010

Wagner Fernandes

Valeu pela dica FACC,
mas infelizmente nao da pra fazer isso em todos os clientes.

A idéia era achar essa solução que o proprio DELPHI controle tudo sozinho...

Alguém ja fez isso com o Delphi???

São diversas os anúncios sobre sistemas que dizem q são cobrados pela quantidade de máquinas q acessa o sistema.  Mas ja pesquisei bastante e ainda não achei uma solução, que o Delphi controle sozinho, que seja boa realmente....

Alguém tem software funcionando assim???
Responder

Gostei + 0

13/06/2010

Adalberto Brasaca

Vou dar uma idéia... Talvez seja o início de algo. Se você tem a sua aplicação instalada em uma máquina com Windows Server e nos clientes você somente aponta o caminho para a aplicação no servidor criando um atalho, provavelmente daria para fazer o seguinte, se não forem muitas licenças simultâneas que você quer liberar: utilizando Terminal Services, você manda para as máquinas clientes somente as telas da sua aplicação, deixando toda instância (cópia)  ser processada no próprio servidor. Assim, todas as instâncias (cópias) do seu aplicativo ficaram rodando somente na memória de uma máquina (servidor). Problema resolvido !!! Sua aplicação deverá, na carga, acessar e contar quantas cópias já estão na memória... Se já tiver chegado ao número total, dará uma mensagem ao usuário e abortará a inicialização dessa nova cópia. O único inconveniente é que, se uma máquina cliente "travar", alguém deverá matar o processo no servidor para liberar a "licença" e não ter que abrir o banco de dados de controle. Espero ter ajudado de alguma forma...
Responder

Gostei + 0

14/06/2010

Wagner Fernandes

Valeu pela dica tbm amigo!!! A idéia é interessante...   Porém, abri a discussão akii novamente, exatamente pra ver se alguém tem a solução considerando exatamente a possibilidade do travamento....   Alguém mais se pronuncia???  
Responder

Gostei + 0

14/06/2010

Alexandre Martinez

Vamos analisar quem pode solucionar o problema quando ele ocorre. É preciso que esteja registrado em algum lugar o último acesso que um determinado usuário fez ao sistema. Se será um arquivo, um banco de dados ou outra forma fica a seu critério.
Esta informação deve estar em uma área de acesso comum, ou seja, no servidor, pois uma máquina cliente travada não me informa nada.
Então imaginemos uma situação em que a máquina cliente travou e a informação do último acesso deste cliente (data e hora) está registrado no servidor. Neste ponto temos duas opções:  1 - O servidor, baseado nesta informação, libera a conexão dos usuários inativos há mais de 5 minutos (arbitrei este tempo). Obviamente haverá um processo no servidor fazendo esta verificação em um intervalo de tempo determinado (sugiro 6 minutos), ou
 2 - Quando o próximo cliente tentar se conectar e o número de conexões tiver chegado ao máximo, será liberada a conexão que estiver inativa há mais tempo. Nas duas situações será preciso atualizar a informação do último acesso do cliente a cada requisição que ele fizer. Talvez isso seja um inconveniente. Mas de que outra forma obterei essa informação? Ela é a chave para o controle que vc quer fazer.
Estas são as duas situações que vislumbro. Uma coisa é certa: se o delphi não faz isso de forma automática, sobrou pra vc. Um abç.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar