talentrydev / locking
此包已被废弃,不再维护。没有建议的替代包。
2.0.2
2021-07-01 15:19 UTC
Requires
- php: ^7.4 || ^8.0
- ext-sockets: *
- doctrine/dbal: ^2.12
- psr/log: ^1.1
- talentrydev/monitoring: ^2.1.1
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
README
此模块提供了一个简单的接口来获取互斥锁。目前,锁定是通过MySQL函数(GET_LOCK 和 RELEASE_LOCK)实现的,但客户端不应依赖此实现,因为这是一个可能会无通知而更改的实现细节。
如何使用
- 使用工厂创建 Lock 实例
$connection = \Doctrine\DBAL\DriverManager::getConnection(['url' => $dbUrl]); $factory = new \Talentry\Locking\Factory\LockFactory($connection); $lock = $factory->generate(); - 调用
Lock::acquire,并提供锁的名称。 - 如果方法返回
true,则表示已获取锁,否则表示未能获取锁(可能是由于另一个客户端已经持有锁)。 - 执行一些有用的工作。
- 调用
Lock::release(再次提供锁的名称),以释放锁,使其可供其他客户端使用。