У моего клиента есть веб-сайт электронной коммерции, на котором продается электроника, и были ситуации, когда товар продавался больше, чем в его инвентаре. Это связано с тем, что если два пользователя покупают продукт одновременно, когда на складе остался только один продукт, один сеанс не заканчивает регистрацию продукта как распроданного до начала другого сеанса (поэтому он продолжается как обычно, думая, что один осталось), хотя в начале процесса есть проверка на месте. Это, очевидно, будет стоить денег (плата за возврат, возмещение и т. Д.) И неудобств для потребителей.
Так что мне было интересно, есть ли способ исправить это? Я думал о создании «маркера» в начале процесса, то есть он проверил бы инвентарь и, если он был продан, маркировал бы продукт как таковой, таким образом предотвращая его покупку другими сессиями. Но это также создает дополнительную проблему: если что-то происходит на стороне клиента, что заставляет его отменить промежуточный процесс (потеря мощности и т. Д.), То даже если продукт помечен как проданный, он фактически не продавался с момента оформления заказа. процесс не закончился. Если это будет продолжаться, то будет избыток продуктов. Во-вторых, сеанс также может проверять наличие запасов, пока другой сеанс помечает его как проданный, поэтому первый сеанс будет продолжаться, даже если второй сеанс уже купил его. Это возвращает нас к первоначальной проблеме.
Я смотрю на блокировки таблиц в конце базы данных, но я не уверен, что это лучшая идея. Любые предложения будут высоко оценены!
Спасибо,
dyip