1

我有这个项目拍卖门户,问题是有时用户无法出价或更好的词是请求出价有时需要 2-3 秒才能注册,冲突是在系统检测到有人之前拍卖已经关闭出价。

我添加了一个日志来查看发生了什么,这是我发现的:

Bid insert date        |    Auction close date
2012-06-25 14:40:57         2012-06-25 14:40:54

如您所见,拍卖已经结束,但出价处理晚了 3 秒。澄清一下,如果拍卖已经结束,用户就不能出价,所以我确信请求是在结束之前提出的。

这发生在每天 1 次拍卖中,我不知道是什么引发了这个问题。我正在使用 PHP 和 MySQL。

4

3 回答 3

1

一个可能的原因是用户加载了包含“出价”按钮的页面,拍卖结束,按钮仍然存在,并且相应地执行了操作。如果您在插入之前验证拍卖是否已关闭,则永远不会发生这种情况。SELECT 和 INSERT 之间的时间不应大于 0.1 秒。我假设您在添加最后一个出价之前没有验证拍卖的状态。

于 2012-07-10T06:59:30.540 回答
1

2-3秒?

您在出价请求时运行了多少查询?我会想象:

1)用户是否登录?2) 是否有账户允许出价?3) 拍卖还开着吗?4) 发布投标

我不会想象这 4 个查询会花费超过一秒钟的时间来运行,除非您编写的查询非常糟糕。您使用的是什么 MySQL DB 层?您是否确保您的代码尽可能精简?即您多久打开一次数据库等。

如果他们出价并且拍卖在他们的出价被处理之前完成,那么艰难的cookie。你没有赢。同样的事情有时会在 eBay 上发生,而且很艰难。如果问题是您的系统允许延迟出价获胜,那么您需要在这方面重新访问您的代码。在保存出价之前,最后一次出价尝试肯定会检查拍卖是否仍在运行。这不应该花费任何时间来完成。

也许您也应该查看表索引。太少,数据搜索慢,太多,影响数据插入速度。

可能有很多错误,从简单的索引错误到狡猾的查询/循环/等等。

于 2012-07-10T08:21:43.197 回答
0

不匹配确切的关闭时间戳,但将其与(关闭时间 - 周转时间)进行比较。

假设关闭时间是 14:00:00,请求的周转时间是 10 秒。然后,如果在 13:59:50 之前提出请求,则只会考虑。

于 2012-07-10T06:51:45.200 回答