NAME
File::Lock::Multi::MySQL - Lock multiple strings in MySQL to emulate taking out multiple locks on a single string.
DESCRIPTION
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.
OPTIONS
In addition to the standard File::Lock::Multi options, the following additional options are available when calling new()
:
- format
-
A sprintf() 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"). - dbh
-
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) } );
LICENSE
Copyright 2010 Tyler "Crackerjack" MacDonald <japh@crackerjack.net>
This is free software; You may distribute it under the same terms as perl itself.