× Linguagem de Programação ADVPL

Perguntas testas se função esta em execução por qualquer usuario

Mais
11 anos 1 semana atrás #18549 por pinheiro
Bom dia. Tenho uma tela de manut de uma tabela e dentro desta rotina ele pode incluir/ alterar / excluir , mas tem uma opção de recalculo que tem que rodar "exclusive". Assim qdo o um usuario manda recalcular, se um segundo user tentar efetuar o recalculo , nao pode ser permitido. Tentei solucionar atraves de um FLAG num parametro MV_, porem se ocorrer do primeiro processo travar e o user sair con CTRL+ALT+DEL o parametro não atualiza e a rotina não executa novamente ate limpar o FLAG. Existe uma forma de verificar se uma rotina(function) esta sendo executada por outro usuario ?

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 semana atrás #18557 por RonaldoLopes
Bom dia, crie um parametro(MV_LIBUSU) informando quais usuários poderão executar esta rotina, dentro do seu fonte, faça a verificação por exemplo:
User Function DDBLOCK()

Local lOk := .T.
Local cParam := AllTrim(SuperGetMV("MV_LIBUSU"))
Local cUsuario := Alltrim(UsrRetName(__CUSERID))

If cUsuario $ cParam

lOk := .F.

EndIf


Return lOk

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 semana atrás #18565 por pinheiro
Ronaldo, bom dia.

Agradeço a sugestão, mas não é bem isto que desejo. A sua sugestão verifica quais usuarios estao liberados para executar a rotina.
O que desejo é verificar se a função JA ESTA SENDO EXECUTADA por algum usuario, e se tiver não permitir que qualquer outro, a utilize.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 semana atrás #18567 por kanaamlrr
Alexandre, tenta usar a função GetUserInfoArray para retornar o array com as informações do server.
Depois faça sua busca na posição 5 do array para verificar se já existe essa rotina em execução ou não.

Tome cuidado para não acabar encontrando a própria conexão e se bloqueando.
Seria interessante validar isso pelo PE CHKEXEC.

Não sei se funciona direito se tiver utilizando balanceamento de carga, porém você pode fazer uns testes.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.067 segundos
Joomla templates by a4joomla