【问题标题】:Multiple users attempting to purchase item at once, Locking row?多个用户试图一次购买物品,锁定行?
【发布时间】:2012-06-23 10:37:47
【问题描述】:

假设我要向多个用户提供一个项目,在项目被“停用”之前,任何用户最多可以进行 10 次购买。这些项目取自 mainitems 表并过滤给特定用户。

对于每次购买,商品行中的计数都会增加,以指示购买的数量。我怎样才能控制说 11 个用户都试图购买这个项目@一次?通过简单地锁定该行直到购买完成然后进行比较来实现这一目标的最佳方法是什么?或者有没有一种方法可以做到这一点,而不必不断地从其他用户那里删除结果然后重新激活它们?

【问题讨论】:

  • 我对 PHP 了解不多,但是 PHP 中有没有像我们在 Java 中的 同步 一样的东西?
  • 按照这里的答案建议查看交易,这是要走的路。

标签: php mysql


【解决方案1】:

你应该使用 sql 事务 在 php 中你应该使用 try{} catch(){} 声明

try
{
//mysql begin transaction


//the code that does what you said it would do


//mysql commit transaction
}
catch(Exception $ex)
{
//mysql rollback

/return false
}

这样一来,我认为不会出现两个用户同时请求商品的情况,交易被视为先进先出。

【讨论】:

    猜你喜欢
    • 2016-12-13
    • 1970-01-01
    • 2012-06-09
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多