Skip to content

Latest commit

 

History

History
86 lines (56 loc) · 2.74 KB

README.md

File metadata and controls

86 lines (56 loc) · 2.74 KB

PHP DB Locker

cog-php-db-locker

Releases License

Introduction

PHP application-level database locking mechanisms to implement concurrency control patterns.

Supported drivers:

  • Postgres

Installation

Pull in the package through Composer.

composer require cybercog/php-db-locker

Usage

Postgres

Transaction-level advisory lock

$dbConnection = new PDO($dsn, $username, $password);

$postgresLocker = new PostgresAdvisoryLocker();
$postgresLockId = PostgresLockId::fromLockId(new LockId('user', '4'));

$dbConnection->beginTransaction();
$isLockAcquired = $postgresLocker->acquireLockWithinTransaction($dbConnection, $postgresLockId);
if ($isLockAcquired) {
    // Execute logic if lock was successful
} else {
    // Execute logic if lock acquisition has been failed
}
$dbConnection->commit();

Session-level advisory lock

$dbConnection = new PDO($dsn, $username, $password);

$postgresLocker = new PostgresAdvisoryLocker();
$postgresLockId = PostgresLockId::fromLockId(new LockId('user', '4'));

$isLockAcquired = $postgresLocker->acquireLock($dbConnection, $postgresLockId);
if ($isLockAcquired) {
    // Execute logic if lock was successful
} else {
    // Execute logic if lock acquisition has been failed
}
$postgresLocker->releaseLock($dbConnection, $postgresLockId);

Changelog

Detailed changes for each release are documented in the CHANGELOG.md.

License

🌟 Stargazers over time

Stargazers over time

About CyberCog

CyberCog is a Social Unity of enthusiasts. Research the best solutions in product & software development is our passion.

CyberCog