Apache-Session
view release on metacpan or search on metacpan
lib/Apache/Session/Lock/MySQL.pm view on Meta::CPAN
local $self->{dbh}->{RaiseError} = 1;
my $sth = $self->{dbh}->prepare_cached(q{SELECT RELEASE_LOCK(?)}, {}, 1);
$sth->execute($self->{lockid});
$sth->finish();
$self->{lock} = 0;
}
}
sub release_write_lock {
$_[0]->release_read_lock;
}
sub release_all_locks {
$_[0]->release_read_lock;
}
sub DESTROY {
my $self = shift;
$self->release_all_locks;
if ($self->{mine}) {
$self->{dbh}->disconnect;
}
}
1;
=pod
=head1 NAME
Apache::Session::Lock::MySQL - Provides mutual exclusion using MySQL
=head1 SYNOPSIS
use Apache::Session::Lock::MySQL;
my $locker = Apache::Session::Lock::MySQL->new();
$locker->acquire_read_lock($ref);
$locker->acquire_write_lock($ref);
$locker->release_read_lock($ref);
$locker->release_write_lock($ref);
$locker->release_all_locks($ref);
=head1 DESCRIPTION
Apache::Session::Lock::MySQL fulfills the locking interface of
Apache::Session. Mutual exclusion is achieved through the use of MySQL's
GET_LOCK and RELEASE_LOCK functions. MySQL does not support the notion
of read and write locks, so this module only supports exclusive locks. When
you request a shared read lock, it is instead promoted to an exclusive
write lock.
=head1 CONFIGURATION
The module must know how to connect to your MySQL database to acquire locks.
You must provide a datasource name, a user name, and a password. These options
are passed in the usual Apache::Session style, and are very similar to the
options for Apache::Session::Store::MySQL. Example:
tie %hash, 'Apache::Session::MySQL', $id, {
LockDataSource => 'dbi:mysql:database',
LockUserName => 'database_user',
LockPassword => 'K00l'
};
Instead, you may pass in an already opened DBI handle to your database.
tie %hash, 'Apache::Session::MySQL', $id, {
LockHandle => $dbh
};
=head1 AUTHOR
This module was written by Jeffrey William Baker <jwbaker@acm.org>.
=head1 SEE ALSO
L<Apache::Session>
( run in 1.121 second using v1.01-cache-2.11-cpan-39bf76dae61 )