webonaute/doctrine-datalocking-bundle

锁定同一实体的对象列表,由单个处理器执行。当锁定被获取时,生成的锁定ID可以被处理器用于执行该锁定列表上的操作。

2.0 2022-05-25 20:08 UTC

This package is auto-updated.

Last update: 2024-08-29 05:06:59 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

关于

锁定同一实体的对象列表,由单个处理器执行。当锁定被获取时,生成的锁定ID可以被处理器用于执行该锁定列表上的操作。

分支

  • 使用版本 1.0-dev 用于 Symfony 4.0+。 build status

安装

此包可通过 composer 获取,在 packagist 上查找。

运行: composer require webonaute/doctrine-datalocking-bundle 1.0-dev

文档

配置实体

将以下代码片段添加到您的实体中。

    use Webonaute\DoctrineDataLockingBundle\Entity\ProcessLock;
    
    ... 
    
    /**
     * @var ProcessLock
     *
     * @ORM\Embedded(class=ProcessLock::class)
     */
    private $processLock;
     
    ...
     
    public function __construct()
    {
        ...
        $this->processLock = new ProcessLock();
    }

    /**
     * @return ProcessLock
     */
    public function getProcessLock(): ProcessLock
    {
        return $this->processLock;
    }     

锁定到期数据。

while (null !== $lockId = $dataLockerService->lock(Entity::class, 500, $extraWhere, $lockAt)) {
    $this->queue->push($lockId);
}

获取与一个锁定ID相关的对象。

$lockedEntities = $dataLockerService->findLocked(Entity::class, $lockId);

使用后解锁对象。

这将简单地解锁对象。要消费实体对象,请使用deleteLocked方法。

$lockedEntities = $dataLockerService->unlock(Entity::class, $lockId);

使用deleteLocked方法使用后消费对象。

此方法将通过从数据库中删除它来消费实体对象。

$lockedEntities = $dataLockerService->deleteLocked(Entity::class, $lockId);

许可证

请参阅 LICENSE