@burov0798
Пытаюсь изучать php\js

Как бороться с выдачей одинаковой информации разным клиентам REST API?

Добрый день. Имеется REST API, с помощью запроса пользователь получает нужную информацию с бд, если запросы идут так, что скрипт на сервере успевает ее обработать и эта информация отмечается в бд, что уже она отдана - то другому пользователю она уже не выдается, но если приходит несколько запросов от разных пользователей в одно и то же время, то сервер может выдать один и тот же аккаунт, т.е. первый запрос не успевает отменить информацию как уже выданную и она выдается обоим пользователям. Даже бывает так, что если 1 пользователь сделать 2 запроса в 1 сек на выдачу ему информации, то бывает что выдает одну и ту же информацию, хотя надо всегда уникальную.
Как бороться с такой проблемой? Может нужно как то сервер настраивать, чтобы он последовательно выполнял запросы и отдавал ответы? Но тогда, если будет около 100 запросов в эти же 1-2 секунды, то просто пользователи не дождутся ответа от сервера.
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 2
SELECT ... FOR UPDATE SKIP LOCKED
Ответ написан
Комментировать
@nApoBo3
Зависит от языка разработки и субд.
Вам в том или ином виде нужно реализовать синхронный метод.
В postgres, как уже написали выше, для этих целей можно использовать select for update, он позволяет заблокировать запись.
Еще один вариант сначала обновлять подходящую запись с определенным ключом, а потом выполнять select по этому ключу.
Так же можно сделать дополнительную таблицу блокировок с уникальным ключом и пытаться внести запись в нее, если не вносится перевыполнять действие или на сервере, или перевыполнять запрос с клиента.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы