[Rio-pm] Controle de processo em perl

Marco A P D'Andrade mdacwb em gmail.com
Terça Junho 17 06:31:32 PDT 2008


Kleber,

Vc cometeu alguns erros graves em seu controle...

Jamais coloque um loop infinito baseado em uma condição, sem ter no mínimo
um sleep no intervalo, ou seu processo irá comer tanta cpu que com 3 ou 4
tentativas terá que reiniciar seu windows ...

Apenas estruturando a ideia...
#------------------
Abrir arquivo (como faria normalmente)
enquanto as tentativas forem menores que X
   Tentar um flock
   se não conseguir
        espera uma fracao de segundo
        tenta até X vezes
   fim-se
fim enquanto
se tentativas >= X
     falhou
     tchau!
fim se

processamento desejado

flock liberando
fechar arquivo
#----------------

O contexto é este, mas por falta de tempo momentaneo, vou deixar vc com a
ideia e a referencia do Fcntl e/ou POSIX (perldoc.perl.org), que possuem
exemplos disto.

No cpan existe uma versão interessante também, que pode ser utilizada
através de um mini-modulo, apesar de eu ter preferido fazer de novo, baseado
em um pidfile no *nix...


Sds,
Marco Antonio

2008/6/17 kleber <payback em oi.com.br>:

> Olá Pessoal ,
>
> Estou executando uma função em perl de forma não concorrente ou seja
> ela só pode ser reexecutada após encerrar a primeira instância.
>
> Atualmente estou fazendo assim :
>
> use warnings;
> use strict;
> use CGI qw( :standard );
> use Fcntl qw( :flock :DEFAULT );
> #
> ########      Permite executar um script pôr vez
> #
> denovo:
> if ( -e "c:\\payback\\cgiaindx.nul" ) { goto denovo; }
> sysopen( TASK, "c:\\payback\\cgiaindx.nul", O_WRONLY|O_EXCL|O_CREAT )
> or warn ( goto denovo );
> flock( TASK, LOCK_EX )  or warn ( goto denovo );
> #
> #########  instruções em perl de uma função qualquer
> #
> flock( TASK, LOCK_UN );
> close( TASK );
> unlink( "c:\\payback\\cgiaindx.nul" );
> exit;
> #
>
> Gostaria de saber se é possível atingir este mesmo objetivo alocando um
> número de processo a variável que controla o pid ( PROCESSO_ID ) E TESTANDO
> SUA DISPONIBILIDADE ??????????????????????
>
> TALVEZ ATÉ MESMO UTILIZANDO UMA VARIÁVEL DE AMBIENTE  E TESTANDO SEU STATUS
> ?????????
>
> OU UTILIZANDO OUTRO MÉTODO DE CONTROLE ??????????????????
> Nota - Meu conhecimento de perl é limitado.
>
> Agradeço a atenção dispensada ,
>
> kleber
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/rio-pm/attachments/20080617/0d05ffcf/attachment.html 


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