[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