arnapou / lock
v1.2
2024-04-05 00:03 UTC
Requires
- php: ~8.3.0
Requires (Dev)
- ext-redis: *
- friendsofphp/php-cs-fixer: ^3.52
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/php-code-coverage: ^11.0
- phpunit/phpunit: ^11.0
README
这个库可以帮助您管理异步过程或竞态条件问题的基础锁。
安装
composer require arnapou/lock
packagist 👉️ arnapou/lock
介绍
这个库提供了基本的锁接口和适配器。
它主要遵循 KISS原则。
如果您需要高级功能,请查看 symfony/lock 或其他等效库。
在这里,目标是针对90%的需求实现最小化代码。
基本用法
$locker = new \Arnapou\Lock\Adapter\RedisLocker(
redis: $redis,
autorelease: true,
defaultTtl: 60,
namespace: 'project:locks:'
);
if ($locker->acquire('my_lock')) {
// do your process
$locker->release('my_lock');
} else {
// delay or report an error
}
装饰器
我们可以通过重试机制等来增强行为。
$waitingLocker = new \Arnapou\Lock\Decorator\WaitingLocker(
internal: $redisLocker,
maxTotalWaitSeconds: 1.0,
minLoopWaitMilliseconds: 20,
maxLoopWaitMilliseconds: 150
);
if ($locker->acquire('my_lock')) {
// do your process
$locker->release('my_lock');
} else {
// delay or report an error
}
PHP版本
日期 | 参考 | 8.3 |
---|---|---|
09/01/2024 | 1.x, 主要 | × |