Symfony2 Doctrine - 数据库 - 同时防止同时访问?

时间:2014-11-27 22:45:40

标签: php mysql ajax symfony doctrine-orm

我认为我目前的问题很容易描述。

我有一个symfony2项目,其中doctrine访问mysql数据库。 现在,多个(多个)用户可以同时访问此页面。

现在,我的问题如下: 用户可以单击按钮将自己标记为条目的参与者。 一个条目最多可以包含允许的参与者。

例如为: 进入A,最大users = 3< -----用户A,B,C和D查看入口A.

现在,A通过单击Ajax按钮将自己标记为参与者。 B做同样的事情(不是同时 - >没问题)。

现在C和D争夺ENTRY A中的最后一个空位。 两者同时点击按钮。

现在可能发生C和D都可以加入此条目,即使最大值。 3的用户被删除。

如果用户点击Ajax按钮,则会发送ajax调用。 在服务器端,在ajax处理程序中,我的symfony2代码将使用doctrine来访问db。 它只是从数据库请求输入并检查是否已达到最大用户数。 如果不是,则用户被保存/标记为条目的参与者。

但这是不允许的。我想避免2个用户可以同时点击按钮加入条目。 在这种状态下,最大条目中的用户定义为3,此条目的参与者数量为4.这不是此功能的目标。

你能解释一下如何解决这个问题吗? 我需要表锁定吗?

如果不清楚问题是什么,那就问问吧。 我期待着答案,我很感激每一个提示。

最佳

2 个答案:

答案 0 :(得分:0)

看到你正在使用MySQL,你可以使用

http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_get-lock http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock

如何对代码进行编码取决于您,但它可用于缓解您所拥有的并发问题。

答案 1 :(得分:0)