【问题标题】:Limit number of users per group on app限制应用程序上每组的用户数
【发布时间】:2016-01-07 03:46:56
【问题描述】:

所以我正在开发一个允许用户加入群组的移动应用。组的上限为特定大小。如果一个组还剩 1 个插槽,我如何防止多个用户同时加入该组?我正在使用 MySQL 作为数据库,并使用 php Web 服务器连接到数据库。像这样的事情可以通过锁来实现,但我不确定如何在同时处理请求时使用 php/mysql 来做到这一点。

我在堆栈溢出时找不到任何其他内容,但也许我搜索不正确。

【问题讨论】:

  • 你如何检查剩余的地方?整个插槽号是否与数据库中的每一行一起保存?
  • 每个组的人数和总数都保存在数据库中,这样我就可以计算出剩余的插槽数。

标签: php mysql concurrency


【解决方案1】:

无论您是将组中的用户数存储在字段中,还是使用 sql 中的 count() 函数即时确定该数,使用带有 innodb 表引擎的select ...for update 来锁定记录以防止被访问,同时您处理组成员资格申请。为此使用显式事务 (start transaction - commit)

这样,第一个用户的应用程序锁定了确定组成员编号所需的记录,因此第二个用户的应用程序将等待第一个用户的应用程序完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 2023-03-17
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2015-12-25
    • 1970-01-01
    相关资源
    最近更新 更多