有一些用户。他们可以执行订单。订单可以为所有用户发送。
当用户收到订单时,他可以在1分钟内接受或拒绝这个订单。
如果用户接受订单,我将信息存储在MySQL中。
id | order_id | user_id | timestamp
1 1 1 12345679
2 1 2 59589333
当剩下1分钟时,没有人可以接受订单。
之后,我的服务处理所有存储的数据,并计算谁先接受订单。
问题是,用户可以比其他人更快地接受订单,但由于网络连接或其他原因,日期会被扭曲。
有两种方法。
一(在客户端计算接受订单的时间)。
秒(计算服务器上在Db中存储数据的瞬间时间)。
所以,不能保证按创建时间戳对用户进行排序。而且我也不能把顺序先分配给用户,因为我对时间没有信心。
网络连接缓慢或其他原因是用户的问题。您只需要关心订单是否能更快地到达您的服务器。你可以用这个来发送订单到你的数据库。
INSERT INTO orders (order_id , user_id, reached_time) VALUES(1, 1, NOW());
然后像这样选择他们。
SELECT id, order_id, user_id FROM orders WHERE reached_time < '2020-01-01 01-00-00' ORDER BY reached_time ASC;
日期'2020-01-01 01-00-00'是截止日期,超过这个日期的订单将不会被选中。