Паралельный запрос на одно действие в crm

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
kapkapiton
Сообщения: 29
Зарегистрирован: 2018.01.30, 11:04
Контактная информация:

Паралельный запрос на одно действие в crm

Сообщение kapkapiton »

Добрый день всем. В нашей админке есть форма для одобрения предоставления товаров на запрос клиентов по нажатию на кнопку "одобрить". После подтверждения данной формы - выбранный товар списывается с запасов из базы данных.

И возможно проблема банальная, но не знаю как решить. Дело в том, что если два менеджера в одно время одобряют одну заявку, то происходит двойное списание товара. То есть вместо одной единицы уходит два. То есть происходит два запроса вместо одного.

Как обычно решается данная проблема? Может нужна какая-то система блокировок, чтобы можно было блокировать второй одинаковый запрос?
masson
Сообщения: 545
Зарегистрирован: 2012.07.03, 15:59

Re: Паралельный запрос на одно действие в crm

Сообщение masson »

В заголовке заявки создавай поле approved (default value = false), потом внутри транзакции проверяешь это поле. Если false, то списываешь товар и устанавливаешь метку approved=true, commit и выход. Если true - то rollback и выход
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Паралельный запрос на одно действие в crm

Сообщение proctoleha »

Я не совсем понимаю, что значит в одно и тоже время. Запросы всегда дискретны. Не может быть такого, что в один и тот же момент времени, одновременно прилетело два запроса. Один из них будет всегда будет выполнен позже, или раньше.

Другое дело, что процесс списания, в данном случае, может занимать какое-то время. И тогда да - первый пользак нажал кнопку - полетел запрос о списании со склада. Результат обработки еще не получен, и в это время другой жмет кнопку - полетел второй запрос. Если это так, заведите поле со статусами обработки. Что-нибудь вроде: ожидает обработку (кнопка не нажата), обрабатывается (нажата), обработано

Если прилетит запрос, а статус обрабатывается, то, или ничего не делать, или выдать сообщение
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
kapkapiton
Сообщения: 29
Зарегистрирован: 2018.01.30, 11:04
Контактная информация:

Re: Паралельный запрос на одно действие в crm

Сообщение kapkapiton »

Спасибо за ответы, проверю все описанные варианты
Ответить