我正在尝试找到一种解决方案来防止我的应用程序逻辑中出现竞争条件(特别是在更新 OAuth 访问令牌时),而我的后端数据库恰好是 mongodb。
来自 MySQL 背景,我习惯使用GET_LOCK
它的相关函数来处理 PHP 中的阻塞。Mongo 是否有任何类似于 MySQL 的GET_LOCK
功能,或者我是否必须使用 PHP 的文件锁定或类似的东西?
对于这种情况是flock()
一个好的(或适当的)替代方案,还是仅在读取和写入文件时使用?
编辑:
我试图防止的竞争条件如下:
实例 A 通知 OAuth 访问令牌即将到期
实例 B 注意到 OAuth 访问令牌即将到期
实例 A 从远程服务器请求刷新的 OAuth 访问令牌并获得一个
实例 B 从同一服务器请求刷新的 OAuth 访问令牌并被拒绝(作为安全预防措施,服务器可能会使步骤 3 中的访问令牌无效)
实例 A 将结果保存回数据库
实例 B 将结果保存回数据库