I have the following requirements:
I can hack together perl code that will do roughly this, but I'd like a more elegant solution.
Store the sequence number in a file and use flock
to make sure only one process can access it:
sub set { # seed the sequence number file
my ($file, $number) = @_;
open my $fh, '>', $file;
print $fh $number;
} # implicit close
sub get {
my $file = shift;
my $incr = @_ ? shift : 1; # get($f) is like get($f,1)
open my $lock, '>>', "$file.lock";
flock $lock, 2;
open my $fh, '<', $file;
my $seq = <$fh>;
close $fh;
set($file, $seq+$incr) if $incr; # update sequence number
close $lock;
return $seq;
}
You can call this as get($file,0)
to retrieve the sequence number without changing it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With