Newsgroup: it.comp.lang.perl
Titolo: flock()

come si usa per evitare che l'acceso contemporaneo di
due cgi cancelli il file?
flock(FILE, 2); #prima di aprirlo
e' giusto?.. oppure č una minc...?
e dopo usato devo fare qualcosa o basta chiuderlo ?
Grazie.

e dopo usato devo fare qualcosa o basta chiuderlo ?
Da quello che leggo dal testo, alla chiusura del file si chiude anche
il flock.
A tal proposito (stavo studiando proprio questo in questi giorni):
concettualmente:
il flock in lettura serve per avere dati sempre aggionati? Cioč, se
uno sta aggiornando, tu non puoi leggere.
Viceversa flock in scrittura risolve il caso di cui ho detto sopra?
-- 
Īš°`°šĪø,ļļ,øĪš°`°šĪø,ļļ,øĪš°`°šĪø,ļļ,øĪš°`°šĪø,ļ
http://www.pigmalion.youngwind.com
 pigmalion network
http://www.pigmalion.youngwind.com/perl/
 appunti Perl - FAQ
Īš°`°šĪø,ļļ,øĪš°`°šĪø,ļļ,øĪš°`°šĪø,ļļ,øĪš°`°šĪø,ļ
-- 
Posted from 
relay4.inwind.it
 [212.141.53.75] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

open (FILE,....);
flock (FILE,2);  #blocco esclusivo
....
flock (FILE,8);    #leva il blocco esclusivo
close (FILE);
Ciao.
-- 
Posted from 
relay3.inwind.it
 [212.141.53.74] 


close (FILE);
E' essenziale togliere il blocco? O decade automaticamente con la
chiusura del file?


Grazie a tutti..
per lo sblocco mi sembra che non serva..  .
io sto facendo senza e non ho avuto problemi
.. in php  la cancellazione in caso di doppio accesso accade, provato
+volte:(
Ciao
Oxy





Mi ripeto, soprattutto con la speranza di conferme e smentite, più che


..infatti è quello che mi succedeva anche in php...
aprendo in scrittura.
probabilmente non succede (la canc. del contenuto)
se apri per accodare..  in questo credo si  perda
solo l'ultima aggiunta come dice pigmalion.
Ciao

..infatti č quello che mi succedeva anche in php...


Chiedo scusa, avevo la testa per aria ed ho risposto troppo in fretta :
dimenticavo che +< (read-write) scrive un bye alla volta, cancellandone uno
alla volta !!!
Quindi il grosso problema lo si ha in questo caso:
199
il primo processo legge 199 incrementa $counter a 200 e poi scrive 2 poi 0 e
poi 0.
Supponiamo che un secondo processo legga il file quando il file contiene 299
cioe' quando il primo processo ha scritto solo il primo byte (dei tre che
deve scrivere). Bene il secondo processo incrementa a 300 e poi lo scrive
!!! (questo sempre che un terzo nel frattempo non legga 399 o 309 !!!)
Insomma non e' come di ce Pigmalion, non si rischia che non venga contato un
inserimento , ma si rischia di incasinare tutto il contatore !!!
Chiedo ancora scusa, per l'errore di prima ( per fortuna me ne sono
acccorto), ma una distrazione e' umana del resto !!!
Alex :-(

!!! (questo sempre che un terzo nel frattempo non legga 399 o 309 !!!)
Ti ringrazio per i chiarimenti, sono anche riuscito a spiegarmi il
perchш di certi valori strani che alcuni counter mi ritornavano. Fanno
parte di un circuito banner quindi ti lascio immaginare l'accesso
concorrente che mi ha combinato.
Ero stranito...ma finalmente
In definitiva credo di aver assimilato anche quest'aspetto e noto che
gli errori possono variare dalla cancellazione allo scombussolamento
dei dati, dipende da come ci si ш ingegnati a 'creare l'errore' :).
Ciao e a presto
-- 
ЄКА`АКЄј,ИИ,јЄКА`АКЄј,ИИ,јЄКА`АКЄј,ИИ,јЄКА`АКЄј,И
http://www.pigmalion.youngwind.com
 pigmalion network
http://www.pigmalion.youngwind.com/perl/
 appunti Perl - FAQ
ЄКА`АКЄј,ИИ,јЄКА`АКЄј,ИИ,јЄКА`АКЄј,ИИ,јЄКА`АКЄј,И
-- 
Posted from 
relay2.inwind.it
 [212.141.53.73] 
