[Cascavel-pm] Controle de processo em perl
Gabriel Vieira
gabriel.vieira em gmail.com
Quarta Maio 14 08:20:04 PDT 2008
Bom,
não há a mínima necessidade de processos em série, aliás, apenas
desvantagens, uma vez que todo o processo ficará lento e dependente.
Utilize sessão. Dessa forma você especificaria qual o conteúdo de qual usuário.
Ex.: Usuário A recebe a sessão de valor 1, logo o Perl (após validação
do JavaScript e do próprio Perl) envia um arquivo 1.txt ao Cobol para
processamento, que em seguida retorna a página 1.html para que o Perl
exiba ao cliente.
Essa é uma forma simples e que evita conflitos. E pode ser aprimorada.
Abraços,
2008/5/14 kleber <payback em oi.com.br>:
> 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
>
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
--
Gabriel Vieira
Mais detalhes sobre a lista de discussão Cascavel-pm