Php 如果产品达到最大数量,停止销售(MySQL数据库)
我有一个非常流行的产品,只有100个可用,但1000多人同时想要它。因此,他们几乎同时选择产品并按下“订单”按钮。但是,只有100种产品可以出售给订购的人,处理负载的最佳方式是什么 我正在使用PHP和MySQL 我现在使用的选项(非常简单的示例,不介意sql注入等。真正的sql是安全的): 订单:Php 如果产品达到最大数量,停止销售(MySQL数据库),php,mysql,Php,Mysql,我有一个非常流行的产品,只有100个可用,但1000多人同时想要它。因此,他们几乎同时选择产品并按下“订单”按钮。但是,只有100种产品可以出售给订购的人,处理负载的最佳方式是什么 我正在使用PHP和MySQL 我现在使用的选项(非常简单的示例,不介意sql注入等。真正的sql是安全的): 订单: +-----------------------------------+ | id | product_name | max_qty | +----+------------------
+-----------------------------------+
| id | product_name | max_qty |
+----+--------------------+---------+
| 1 | Very Populair item | 100 |
+-----------------------------------+
+-------------------------+
| id | product_id | payed |
+----+------------+-------+
| 1 | 1 | 1 |
+----+------------+-------+
所以我的问题是,有没有更好更安全的方法?可能在MySQL中使用触发器,所以当下订单时,它会向数据库中的计数器添加1
我希望有人有更好的解决方案,因为我的解决方案没有太多的负载。为什么不更改数量列并减少它?我会使用另一个表为某人锁定产品。类似于票务系统的工作原理。当他们添加到购物车时,你们从可用的库存中提取一个,并在到期时将其放入存放台。要么用户购买了它,然后进入订单表,不在库存中,要么它过期并被添加回库存中。然后,您将运行一个事件或进程来检查要放回的过期产品。从select查询中的计数减去订单。你的恶意代码BTWI会建议你使用锁表和会话,以便将一个表锁定x个时间量,比如说2分钟,因此每次用户在购物车中添加一个产品时,你只需将一个条目添加到另一个锁表中,锁表的每一行都附加到一个唯一的顺序。如果订单完成,那么在关闭订单之前,您只需选择锁表中具有唯一id的所有产品,并从主表中减去每个产品的购买金额,否则订单已被取消,只需删除锁定表中的行,为什么不更改数量列并减少它?我会使用另一个表为某人锁定产品。类似于票务系统的工作原理。当他们添加到购物车时,你们从可用的库存中提取一个,并在到期时将其放入存放台。要么用户购买了它,然后进入订单表,不在库存中,要么它过期并被添加回库存中。然后,您将运行一个事件或进程来检查要放回的过期产品。从select查询中的计数减去订单。你的恶意代码BTWI会建议你使用锁表和会话,以便将一个表锁定x个时间量,比如说2分钟,因此每次用户在购物车中添加一个产品时,你只需将一个条目添加到另一个锁表中,锁表的每一行都附加到一个唯一的顺序。如果订单完成,那么在关闭订单之前,您只需选择具有唯一id的锁表的所有产品,并从主表中减去每个产品的购买金额,否则订单已取消,只需删除锁表中的行即可
+-------------------------+
| id | product_id | payed |
+----+------------+-------+
| 1 | 1 | 1 |
+----+------------+-------+