O lock funciona como sem�foro, impedindo situa��es de corrup��o de dados por
grava��o simultanea.
Quando vc necessita somente saber o que existe no arquivo, n�o h� necessidade
disto, por�m, quando a leitura � vinculada � altera��o deste conte�do, �
fundamental.
No caso do contador, se ler sem fazer o lock poder� ler um arquivo vazio,
devido aos microsegundos entre a abertura e a grava��o dos dados, ou perder um
n�mero na contagem.
Se vc tiver uma rotina que altera e outra que verifica os dados, a segunda por
fazer somente leitura podera operar sem lock...
francisco lopes wrote:
> uma vez algu�m aqui na lista falou que o flock() s� era necess�rio na
> escrita, e na leitura n�o tinha necessidade.
> algu�m pode dizer algo sobre isso?
>
> abra�os,
>
> _______________________
> francisco lopes
> uin: 17364815
> email: [EMAIL PROTECTED]
>
> -----Mensagem Original-----
> De: Marco A P D' Andrade <[EMAIL PROTECTED]>
> Para: <[EMAIL PROTECTED]>
> Enviada em: Ter�a-feira, 21 de Mar�o de 2000 09:04
> Assunto: Re: [perl] Contador
>
> > Deveria ter zerado mais vezes !!
> >
> > Veja que vc bloqueia o arquivo e como o flock vai ficar aguardando poder
> > bloquear, qualquer acesso simultaneo (no exato segundo) iria zerar.
> >
> > Open
> > Aguarde at� bloquear
> > Ler
> > unlock
> > Fechar
> >
> > open
> > lock
> > gravar
> > unlock
> >
> > Alguem faz a leitura na hora que vc esta com o arquivo zerado...
> >
> > Pimba. zerou!
> >
> > Use este. (nunca zerou!)
> >
> > sub ConsultaID()
> > {
> > my ( $ID, $cnt );
> > unless ( open(C, "+<../count/login") ) {
> > $ID = "00000000";
> > } else {
> > flock(C, 2);
> > $ID = <C>;
> > $ID = sprintf("%08s", $ID+1);
> > seek(C, 0, 0);
> > print C $ID;
> > flock(C, 8);
> > close(C);
> > }
> > return ( $ID );
> > }
> >
> > Por favor...
> >
> > Mail em texto!
> >
> > Felipe wrote:
> >
> > > Pessoal o que tem de errado com o CGI.. � a segunda vez que o contador
> > > zera: #########!/usr/local/bin/perl
> > > open(ARQ,"<cgi/counter/counter.txt");
> > > flock ARQ,2;
> > > $reg=<ARQ>;
> > > open(ARQ,">cgi/counter/counter.txt");
> > > $num=($reg+1);
> > > print ARQ "$num";
> > > flock ARQ,8;
> > > close(ARQ);
> > > $cont=length($reg);
> > > print "<p align=\"center\"><font
> > > face=\"Arial\"><small><small>Visitantes<br>";
> > > for($i=4;$i>$cont;$i--)
> > > {
> > > print"0";
> > > };
> > > print "$reg</small></small></font></p>";
> > > exit;########### Em Unix o flock funciona??? eu uso unix...ele �
> > > chamando por ssi da p�gina... funciona certinho.. s� que zerou de
> > > novo... ele zerou em 600 agora em 2500.... Valeu..... ... Felipe ....
> >
> > --
> > FiscoData Legisla��o On Line - Curitiba/PR
> > Marco A P D'Andrade - [EMAIL PROTECTED]
> > WebMaster (41) 333-5775
> >
> >
> > http://www.mrweb.com.br/perl/
> > =======================================
> > >>No site da lista, voce tera tudo sobre PERL,
> > >>LINUX, PHP, ASP e informacoes, cadastramento
> > >>e descadastramento da Lista.
> > =======================================
>
> http://www.mrweb.com.br/perl/
> =======================================
> >>No site da lista, voce tera tudo sobre PERL,
> >>LINUX, PHP, ASP e informacoes, cadastramento
> >>e descadastramento da Lista.
> =======================================
--
FiscoData Legisla��o On Line - Curitiba/PR
Marco A P D'Andrade - [EMAIL PROTECTED]
WebMaster (41) 333-5775
http://www.mrweb.com.br/perl/
=======================================
>>No site da lista, voce tera tudo sobre PERL,
>>LINUX, PHP, ASP e informacoes, cadastramento
>>e descadastramento da Lista.
=======================================