首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并发模型mongodb原则symfony

并发模型mongodb原则symfony
EN

Stack Overflow用户
提问于 2017-01-22 12:57:45
回答 1查看 101关注 0票数 1

我正在平台上工作-- MarketPlace,有预约。有一些专业人士创造了可用性。可用性是创建周期,例如上午8:00到下午5:00。它是保存在mongodb中的时间段。客户选择1小时。(客户日历是动态生成的,周期为1小时),例如:上午8:00至下午5:00期间有:8:00-9:00上午9:00,9:00-10:00等…。

因此,两个客户不可能同时预订同一时间。

当客户选择一个句点并单击“预订”按钮时,预订对象将保存在会话中。客户购买此预订,并在预订对象保存在预订集合中之后。

如何“锁定”由第一个客户选择的时间段,防止第二个客户想要保留同一期间?

我怎样才能固定计时器10分钟,如果没有支付期间的“可用性”,打开日历中的这段时间?如何创建与服务器同步的计时器,并在超时结束时重定向到主页?我必须创建一个临时集合,预订正在进行中?还是将对象保留保存在我的集合中,保留状态为“进行中”?

我使用symfony 3和mongodb作为教条。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-22 13:25:13

如何“锁定”由第一个客户选择的时间段,防止第二个客户想要保留同一期间?

在MongoDB中,对单个文档的更新是原子的,这就是为什么您可以设置如下所示的保留标志:

代码语言:javascript
复制
db.time_reservation.update(
    {_id: "<period primary key>", reserved: false,}, {
        $set: {
            reserved: true,
            reservedAt: new Date()
        }
    });

我怎样才能固定计时器10分钟,如果没有支付期间的“可用性”,打开日历中的这段时间?

您可以使用cron命令执行以下命令

代码语言:javascript
复制
db.time_reservation.update({
    reservedAt: {
        $lt: new Date(ISODate().getTime() - 1000 * 60 * 10)
    }
}, {$set: {reserved: false}});

如何创建与服务器同步的计时器,并在超时结束时重定向到主页?

许多可能的解决办法:

  • 您可以在每个预订阶段检查这个。
  • 您可以从后端获得时间戳并验证它(如果不是SPA,则将其保存到cookie中)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41791152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档