| File-Lock-Multi documentation | view source | Contained in the File-Lock-Multi distribution. |
File::Lock::Multi::MySQL - Lock multiple strings in MySQL to emulate taking out multiple locks on a single string.
This module uses MySQL's GET_LOCK() function on multiple strings to
emulate taking out multiple locks on a single string.
It is very important that database handles are not used to take out any other locks, for your resource or for any other resource! From the MySQL documentation:
"If you have a lock obtained with GET_LOCK(), it is released when you execute RELEASE_LOCK(), execute a new GET_LOCK(), or your connection terminates (either normally or abnormally)."
See the dbh option below for more details.
In addition to the standard File::Lock::Multi options, the following
additional options are available when calling new():
A sprintf() (sprintf in perlfunc) format string used to come up with
the individual lockfile names. sprintf() will be passed the file's path
and the lock number as the first and second parameters. (Default: "%s.%i").
Either a database handle, or a "factory" (code reference which returns a new database handle each time it is invoked). Because each MySQL lock is unique to a database handle, and each database handle may only have one lock, you almost always need a fresh database handle to hold onto a lock. Example:
my $lock = File::Lock::Multi::MySQL->new(
file => "limited.resource", limit => 5,
dbh => sub { DBI->connect("DBI:mysql:", $user, $password) }
);
Copyright 2010 Tyler "Crackerjack" MacDonald <japh@crackerjack.net>
This is free software; You may distribute it under the same terms as perl itself.
File::Lock::Multi, flock in perlfunc
| File-Lock-Multi documentation | view source | Contained in the File-Lock-Multi distribution. |