我正在建立一个基于php/mysql的平台,允许用户只需要一定比例的产品。基本上,他们选择他们想要出价的百分比和他们想要出价的加价价格,例如1.2。
我的问题是,如果有几个出价同时放在同一个产品,我需要排队的出价,以便当处理时,只有有效的通过。例如,如果有20%的可用值为1.2,而两个用户同时出价为20%的出价为1.2,则每个出价的过程将为:1-选择当前出价2- php处理以确定出价是否仍然可用3- place bid
这里的问题是,如果两个“检查是否可用”都发生在“投标人”之前,那么两个投标人都会通过,并有效地导致股票发行。
有没有一种方法来排队这个过程,以便整个步骤1-3发生的出价之前,下一个可以运行。
我最初的想法是使用一个缓存表来存储所有的出价,然后每隔几秒钟运行一次cron,它将按照缓存表中的ID顺序进行处理,并相应地进行通知,但这似乎在高流量系统上是不可行的,因为服务器会因此而崩溃。
任何帮助都非常感谢
发布于 2012-06-22 19:20:49
我在PHP级别解决了这个问题,首先将出价作为“接受的出价”进行注入,这样随后的出价就会失败。然后我运行检查,看看出价是否正常,如果不是,出价就会被删除,如果是的话,表格就会根据新出价的要求进行更新。
发布于 2012-06-21 19:30:08
如果两个出价永远不会相同,我会在数据层解决它。创建一个唯一的关键字在您的投标表基于item_id,bid_value和任何其他需要是唯一的。第二次插入将失败,您可以让用户知道他们被打败了
https://stackoverflow.com/questions/11137038
复制相似问题