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.
=======================================

Responder a