[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