我正在使用一个简单的提交申请,为每位访客提供以下服务:
我知道有两个同步客户端获取目录列表并为它们确定相同的下一个最大数字可能存在经典竞争条件。为了缓解这个问题,我使用了以下步骤:
这看起来有足够的步骤吗?我在想,网络拥塞会导致进程A存储和读取自己的数字并确定它已经赢了,然后进程B会得出相同的结论。我该如何缓解这种情况?我正在考虑为操作引入明确的超时时间 - 例如目录创建需要最多n秒,这将是进程在检查随机数之前等待的时间。
或者有没有办法检查FS内容和创建目录的原子操作,或者至少做创建但不替换操作?或者创建失败而不是替换现有文件?
顺便说一下 - 我正在使用PHP和官方SDK。