[Cascavel-pm] Controle de processo em perl

kleber payback em oi.com.br
Quarta Maio 14 05:55:09 PDT 2008


Ok Mota , Agradeço sua atenção.
Vou tentar descrever meu problema.

Eu estou escrevendo um sistema e estou trabalhando com 3 linguagens:
              Cobol , javascript , perl.

Basicamente estas linguagens atuam da seguinte maneira :

Javascript - Realiza validação dos dados ( formulário ) na máquina do 
cliente.

Perl - Recebe os dados do formulário do cliente , grava em um arquivo texto
         para entrada de dados no cobol , executa um programa cobol através 
do
        comando system e envia a resposta ao cliente.

Cobol - Lê arquivo de entrada de dados , realiza manutenção na base de dados
            e gera um arquivo html sobre o status do processamento.
            A resposta enviada pelo perl ao cliente está neste arquivo html.

Ao realizar alguns testes com uso concorrente ( duas ou mais pessoas 
acessando a
mesma rotina perl ) , verifiquei que o arquivo html gerado pelo cobol  do
usuário A estava sendo direcionado para usuário B.
Resolvi este problema criando um arquivo nulo e testando sua existência
para execução de um processo perl.
Entretanto , tenho consciência de que não é a melhor solução pois , caso
exista algum problema na rotina perl e o arquivo de controle ou nulo não é 
eliminado , todas as solicitações vão ficar dependuradas.

Pesquisando este assunto , verifiquei a possibilidade de utilizar a
alternativa de controle de processo ( função waitpid ou outro processo ).
O objetivo é executar uma rotina em perl sem uso concorrente ou seja ,
enquanto ela estiver sendo executada , todas as solicitações de execução
desta rotina devem aguardar.

Vou dar um exemplo prático deste problema :

O sistema que estou escrevendo realiza autenticação do usuário.
Ou seja , o usuário informa de seu código de acesso e senha , envia os dados
ao perl que grava em um arquivo texto para passagem ao cobol.
O cobol verifica se os dados estão corretos e grava arquivo de autorização
de acesso ( html ) que contém informações tais como : quais sistemas o
usuário pode acessar , qual o nível de autorização deste usuário ( acessa
todas as funções ou módulos do sistema ) , qual o status do usuário (
privilegiado , normal , etc ).
Este arquivo de autorização de acesso pertence ao usuário A e não pode
ser direcionado para o usuário B.

Por isso preciso garantir que , enquanto um processo perl  esteja sendo
executado , todos os demais precisam aguardar sua conclusão.

Espero ter descrito com mais clareza minha necessidade.

Um abraço ,

kleber

Nota - Minha capacidade de programação em perl é modesta. Estou me 
orientando pelo livro PERL COMO PROGRAMAR - DEITEL.





----- Original Message ----- 
From: "Luis Motta Campos" <luismottacampos em yahoo.co.uk>
To: "Cascavel Perl Mongers" <cascavel-pm em pm.org>
Sent: Tuesday, May 13, 2008 5:56 PM
Subject: Re: [Cascavel-pm] Controle de processo em perl


kleber wrote:
> Estou precisando executar um script em perl e garantir que sua
> re-execução só se realize após o encerramento da rotina em andamento
> ou seja a rotina pode ser acionada pôr vários usuários porém deve ser
> executada de forma individual ou única.
>
> Alguém sabe coma fazer isto ?????????????

Eu sei como garantir execução individual;

Também sei como garantir execução única;

O meu problema é que eu sempre achei que os dois conceitos fossem
incompatíveis: se todo mundo pode executar uma instância, não tem como
garantir que tem apenas uma instância rodando, e vice-versa.

Agora, o bom mesmo é garantir que todas as execuções possam acontecer
simultâneamente, sem que elas se afetem umas às outras: prefira
paralelismo à exclusão mútua.

Normalmente, quando requisitos como este aparecem, a primeira pergunta
que eu faço é: o que você está tentando fazer, e por que você acredita
que deve garantir exclusão mútua dos processos? Normalmente, a exclusão
não é necessária, ela é sim um erro de projeto no seu sistema.

Aguardo mais informações sobre o problema, por favor.

Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm




Mais detalhes sobre a lista de discussão Cascavel-pm