【发布时间】:2019-12-10 10:31:26
【问题描述】:
我有一些实体和用户。该实体只能由一个用户处理。 因此,如果用户对该实体进行了 GET 请求,它将在一段时间内“连接”到他。
我发现我可以对这个东西使用缓存,但是关于Atomic locks 的解释对我来说不是很清楚,有人可以帮忙举一个简单的例子来演示使用吗?
【问题讨论】:
我有一些实体和用户。该实体只能由一个用户处理。 因此,如果用户对该实体进行了 GET 请求,它将在一段时间内“连接”到他。
我发现我可以对这个东西使用缓存,但是关于Atomic locks 的解释对我来说不是很清楚,有人可以帮忙举一个简单的例子来演示使用吗?
【问题讨论】:
这是我最近实现的:
try {
// Trying to acquiring lock.
// If lock is already acquired, waiting 5 seconds to try again.
Cache::lock($key)->block(5);
} catch (LockTimeoutException $e) {
// Unable to acquire lock, can't cache the token
return;
}
// Lock acquired, caching the token
Cache::put($key, $token, 1);
为了测试这一点,我们使用了 2 台设备作为同一用户登录并同时发出相同的请求。 希望这会有所帮助。
【讨论】: