paysera/lib-lock-bundle

提供用于组织系统中的锁的实用工具

安装次数: 15 155

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 4

分支: 7

开放问题: 2

类型:symfony-bundle

2.0.2 2024-04-02 08:10 UTC

This package is auto-updated.

Last update: 2024-09-02 08:59:08 UTC


README

提供与symfony/lock的快速集成

安装

  • 安装包
composer require paysera/lib-lock-bundle
  • 启用包
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            // ...
            new Paysera\Bundle\LockBundle\PayseraLockBundle(),
        ];

        // ...
    }
}

配置

paysera_lock:
    ttl: 5 # integer, optional
    redis_client: # service id, required

ttl - 锁的TTL时间(秒),默认5秒。

redis_client - 由symfony/lock支持的任何Redis客户端服务ID

使用方法

  • LockManager::createLock($identifier) - 创建锁但不会获取它
  • LockManager::acquire($lock) - 获取锁或在失败时抛出LockAcquiringException
  • LockManager::createAcquired($identifier) - 创建已获取的锁或在失败时抛出LockAcquiringException
  • LockManager::release($lock) - 释放锁

示例

$lock = $this->lockManager->createLock($identifier);
try {
    $this->lockManager->acquire($lock);
    
    // do something after aquiring lock
} catch (LockAcquiringException $exception) {
    throw new Exception('...');
} finally {
    $lock->release();
}

或者

try {
    $lock = $this->lockManager->createAcquired($identifier);
} catch (LockAcquiringException $exception) {
    throw new Exception('...');
}

// do rest