因此,我正在开发一款允许用户加入群组的移动应用。群组的上限为一定规模。如果一个组有1个插槽,我如何阻止多个用户同时加入该组?我使用MySQL作为数据库,使用php web服务器连接数据库。使用锁可以实现这样的功能,但我不确定在同时处理请求时如何使用php / mysql执行此操作。
我无法在堆栈溢出中找到任何其他东西,但也许我没有正确搜索。
答案 0 :(得分:1)
无论您是在一个字段中存储组中的用户数,还是使用sql中的count()函数即时确定此数字,请使用带有innodb表引擎的select ...for update来锁定记录处理组成员身份应用程序时访问。为此使用显式事务(start transaction - commit)
这样第一个用户的应用程序就会锁定确定组成员编号所需的记录,因此第二个用户的应用程序将等到第一个用户的应用程序完成。