小编Dja*_*oSi的帖子

PHP/MySQL - 如何防止两个请求*更新

我有一些问题......例如:用户会为他的美元购买东西

  1. 检查他的美元余额
  2. 从他的账户中扣除美元
  3. 订单 - >订单队列
  4. 用户得到他的物品,另一个得到他的美元

可以说,用户在同一秒内发出5个请求(非常快).因此,有可能(并且正在发生)5个请求正在运行.他只有1个请求才能购买.现在请求是如此之快,以至于脚本检查了他的余额,但速度不是很快,它从他的帐户中扣除了钱.所以请求将通过两次!怎么解决?

我在开始这个过程之前在mysql中使用LOCK:

  1. IS_FREE_LOCK - 如果没有 - > 2,检查该用户是否有锁.
  2. GET_LOCK - 设置锁定
  3. 下订单/交易
  4. RELEASE_LOCK - 释放锁

但这并没有真正起作用.还有另外一种方法吗?

function lock($id) {
  mysql_query("SELECT GET_LOCK('$id', 60) AS 'GetLock'");
}

function is_free($id) {
  $query = mysql_query("SELECT IS_FREE_LOCK('$id') AS 'free'");
  $row = mysql_fetch_assoc($query);
  if($row['free']) {
    return true;
  } else {
    return false;
  }
}

function release_lock($id) {
  mysql_query("SELECT RELEASE_LOCK('$id')");
}

function account_balance($id) {
  $stmt = $db->prepare("SELECT USD FROM bitcoin_user_n WHERE id = ?");
  $stmt->execute(array($id));
  $row = $stmt->fetch(PDO::FETCH_ASSOC);

  return $row['USD']; …
Run Code Online (Sandbox Code Playgroud)

php transactions

22
推荐指数
3
解决办法
3万
查看次数

子域上的ActionCable而不是subdir

我试图让ActionCable在子域上工作.

问题是,只要我改变以下行

config.action_cable.mount_path = '/'
Run Code Online (Sandbox Code Playgroud)

该应用程序不再工作.但ActionCable适用于子域.是否有任何解决方案在没有子目录的子域上运行ActionCable /cable

ruby-on-rails actioncable

9
推荐指数
1
解决办法
275
查看次数

有关Flot plothover的更多信息

是否有可能在Flot plothover中显示更多信息

 x = item.datapoint[0]
 y = item.datapoint[1]
Run Code Online (Sandbox Code Playgroud)

我将在我的数据中添加3个信息,例如:y,x,someinfo

[1337341819000, 7.00000000, 3.95000000]
Run Code Online (Sandbox Code Playgroud)

首先是日期,第二个是金额,第三个是我将在悬停中显示的信息.

jquery flot

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

actioncable ×1

flot ×1

jquery ×1

php ×1

ruby-on-rails ×1

transactions ×1