http://qs321.pair.com?node_id=180607

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi all, The following code is running on a high traffic site:
open(file, "$mailclicks"); flock(file, 2); @recs = <file>; flock(file, + 8); close(file); $i = 0; foreach $rec (@recs) { $rec =~ s/\n//g; ($id,$description,$need,$received) = split(/::/,$ +rec); if ($id eq $formdata{'id'}) { $received++; $recs[$i] = "$id\:: +$description\::$need\::$received"; } $i++; } open(file, ">$mailclicks"); flock(file, 2); foreach $r (@recs) { print file "$r\n" unless ($r eq "" || $r eq " +\n"); } flock(file, 8); close(file);
This increments a tracking counter for use by another script. The problem is that the data file goes blank randomly. Other scripts access the file but I have isolated it to this snippet. I haven't been able to find a pattern or reproduce the problem myself. It generally takes 100 or so users before it happens. No corruption of the file along the way. I'm hoping this is a common problem in perl? Thanks much, Ian