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