我有这个项目拍卖门户,问题是有时候用户不能出价或者更好的词是请求出价,有时需要2-3秒才能注册,冲突是拍卖在系统检测到有人出价之前就已经关闭了。
我添加了一个日志来查看发生了什么,下面是我发现的:
Bid insert date | Auction close date
2012-06-25 14:40:57 2012-06-25 14:40:54正如你所看到的,拍卖已经接近尾声,但是出价已经晚了3秒。为了澄清一下,如果拍卖已经结束,用户就不能出价,所以我确信这个请求是在拍卖结束之前提出的。
这发生在每天一次拍卖,我不知道什么能触发这个问题。我使用的是PHP和MySQL。
发布于 2012-07-10 06:59:30
一个可能的原因是用户加载页面,包括一个‘出价’按钮,拍卖关闭,按钮仍然在那里,并相应地执行操作。如果您要验证拍卖是否在插入之前已经关闭,那么这种情况永远不会发生。SELECT和INSERT之间的时间不应超过0.1秒。我想,在添加最后一个出价之前,您不会验证拍卖的状态。
发布于 2012-07-10 08:21:43
2-3秒?
您在出价请求点上运行了多少个查询?我可以想象:
( 1)用户登录了吗?( 2)是否有允许投标的帐户?( 3)拍卖是否仍然开放?
我不认为这4个查询需要超过1秒的时间才能运行,除非您已经编写了非常好的查询。您使用的是什么MySQL DB层?您是否确保您的代码尽可能精简?例如,您多久打开一次数据库,等等。
如果他们出价和拍卖结束之前,他们的出价被处理,强硬饼干。你还没赢。在eBay上有时也会发生同样的事情,这是非常困难的。如果问题是你的系统允许延迟投标获胜,那么你需要在这方面重新检查你的代码。最后一次投标尝试肯定会在保存出价之前检查拍卖是否仍在进行。这不应该需要近一秒的时间。
也许您也应该检查您的表索引。数据搜索速度太慢,数据量太大,数据插入速度受到影响。
可能有很多错误,从简单的索引错误到可疑的查询/循环/等等。
发布于 2012-07-10 06:51:45
不匹配确切的关闭时间戳,但将其与(关闭时间- turnaround_time)进行比较。
假设关闭时间是14:00,请求的周转时间是10秒。如果在13:59:50之前提出请求,我们将只考虑。
https://stackoverflow.com/questions/11408001
复制相似问题