laravel - 如何在 Laravel 中使用原子锁?
问题描述
我有一些实体和用户。该实体只能由一个用户处理。因此,如果用户对该实体进行了 GET 请求,它将在一段时间内“连接”到他。
我发现我可以为这个东西使用缓存,但是关于原子锁的解释对我来说不清楚,有人可以帮忙举一个简单的例子来演示使用吗?
解决方案
这是我最近实施的:
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 台设备以同一用户身份登录并同时发出相同的请求。希望这可以帮助。
推荐阅读
- haskell - Haskell中Monad中的“刚性类型变量”问题
- wso2 - WSO2EI 7.x 中缺少 JsonUtil
- regexp-substr - 为什么 Oracle SQL 函数 regexp_substr 不返回所有匹配字符?
- css - 使用伪元素 (::before) 作为跳转链接目标在 CSS 中不起作用
- c# - EF Core 'The DbFunction 'ÉmpContext.fnGetEmployeeEligibility' 在调用表值函数时具有无效的返回类型 'ÉmpMaster''
- html - 如何使用具有不同父级的 CSS 选择器获取最后匹配的元素?
- java - 无法解析模块/未解决的需求 org.eclipse.core.runtime
- git - git rebase --interactive | 重命名路径案例失败
- html - 是所有 URL 都被视为 API 端点,还是仅被视为 api.company.com/...之类的那些?
- python - 具有列表理解的字典