首页 > 解决方案 > 如何在不同的服务器实例中使用 Symfony Lock 组件?

问题描述

来自 Symfony 锁组件的文档 here

我找到

与其他实现不同,锁组件即使是为同一资源创建的锁实例也会区分它们。如果一个锁必须由多个服务使用,它们应该共享 Factory::createLock 方法返回的同一个 Lock 实例。

对于代码示例

public function tryLock( $job):
{
    $lock = $this->factory->createLock($job->getUniqueId());
    $lock->acquire();
    return $lock->isAcquired() ;
}

如果我从其他类使用相同的作业运行此功能 2 次,它将相互锁定

我怎样才能防止这种情况?!当我在同一台服务器上使用它时,另一个问题是如果我使用多个服务器实例,我该如何使用它

标签: symfony

解决方案


推荐阅读