PHP application-level database locking mechanisms to implement concurrency control patterns.
Supported drivers:
- Postgres
Pull in the package through Composer.
composer require cybercog/php-db-locker
$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();
$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);
Detailed changes for each release are documented in the CHANGELOG.md.
PHP DB Locker
package is open-sourced software licensed under the MIT license by Anton Komarev.
CyberCog is a Social Unity of enthusiasts. Research the best solutions in product & software development is our passion.