Как рассчитать, кто первым примет заказ? - PullRequest
0 голосов
/ 09 мая 2020

Есть несколько пользователей. Они могут выполнять заказы. Заказы могут быть отправлены для всех пользователей.

Когда пользователь получает заказ, он может принять или отклонить его в течение 1 минуты.

Если пользователь принимает заказ, я сохраняю информацию в MySQL.

id | order_id | user_id | timestamp
1    1          1         12345679
2    1          2         59589333

Когда осталась одна минута, никто не может принять заказ.

После этого моя служба обрабатывает все сохраненные данные и вычисляет, кто первым принял заказ.

Проблема в том, что пользователь может принять заказ быстрее, чем другой, но из-за rnet связи или даты по другим причинам будет искажено.

Есть два способа:

Один (рассчитать время на стороне клиента в момент принятия):

  1. Пользователь принимает заказ
  2. Получить текущую метку времени
  3. Отправить текущую метку времени на сервер
  4. Сохранить текущую метку времени в Db

Секунда (вычислить время на сервере в момент сохранения данных в Db)

  1. Пользователь принимает заказ
  2. Отправить данные на сервер
  3. Получить текущую метку времени
  4. Сохранить текущую метку времени в Db

Итак , это не гарантирует сортировку пользователей по созданной метке времени. И я не могу назначить заказ первого пользователя, потому что не уверен во времени.

1 Ответ

0 голосов
/ 09 мая 2020

Медленное соединение rnet или другие причины - проблема пользователей. Вы должны заботиться только о том, чтобы приказы ведьм быстрее достигли вашего сервера. Вы можете использовать это для отправки заказов в свою базу данных.

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;

Datetime '2020-01-01 01-00-00' - это крайний срок и любой заказ после этого не будет выбран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...