0

我正在 php/mysql 上构建一个平台,该平台允许用户使用产品的一部分。基本上,他们选择他们想要出价的百分比以及他们想要出价的加价,例如 1.2。

我遇到的问题是,如果同一产品同时有多个投标,我需要将投标排队,以便在处理时只有有效的投标通过。例如,如果有 20% 的可用价值为 1.2,并且两个用户同时以 1.2 出价 20%,则每个出价的过程将是: 1----- 选择当前出价 2----- php 处理确定出价是否仍然可用 3----- 出价

这里的问题是,如果两个“检查是否可用”都发生在任何一个“出价”之前,那么两个出价都将通过并有效地导致股票问题。

有没有办法让这个过程排队,所以在下一个可以运行之前,整个步骤 1-3 都发生在投标中。

我最初的想法是使用缓存表来存储所有出价,然后每隔几秒运行一次 cron,它将按照缓存表中的 ID 顺序进行处理并相应通知,但这似乎在高流量系统上可能不可行因为服务器会被锤击。

非常感谢任何帮助

4

2 回答 2

0

我在 PHP 级别解决了这个问题,首先将出价作为“接受的出价”注入,这样任何后续的出价都会失败。然后我运行检查以查看出价是否正常,如果不是,则移除出价,是否根据新出价的要求更新表格。

于 2012-06-22T11:20:48.727 回答
0

如果两个出价永远不可能相同,我会在数据层解决它。根据 item_id、bid_value 和其他任何需要唯一的内容,在您的出价表上创建一个唯一键。第二次插入将失败,您可以让用户知道他们被打败了

于 2012-06-21T11:30:07.717 回答