---
name: "Apache::Session::Lock::MySQL"
section: "3pm"
platform: "linux"
package: "libapache-session-perl"
version: "1.94-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Apache::Session::Lock::MySQL"
---

# Apache::Session::Lock::MySQL(3pm)

Provides mutual exclusion using MySQL

## NAME

Apache::Session::Lock::MySQL - Provides mutual exclusion using MySQL

## 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);
```

## 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.

## 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
 };
```

## AUTHOR

This module was written by Jeffrey William Baker \<jwbaker@acm.org\>.

## SEE ALSO

Apache::Session
