arnapou/lock

库 - 简单锁接口和适配器。

v1.2 2024-04-05 00:03 UTC

This package is auto-updated.

Last update: 2024-09-08 14:53:13 UTC


README

pipeline coverage

这个库可以帮助您管理异步过程或竞态条件问题的基础锁。

安装

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/20241.x, 主要×