Как предотвратить состояние гонки в онлайн-бронировании отеля

Я пишу программу бронирования гостиниц с использованием PHP и MySQL. Я в значительной степени сделал это, но я столкнулся с проблемой состояния гонки. Например, остается только один стандартный номер, и когда 2 человека выбирают его, он показывает доступным для них обоих. Я попытался его исправить, проверив комнату снова, когда гость нажал кнопку подтверждения перед оплатой, но у нее все еще есть проблемы. Я также попытался сделать состояние комнаты ожидающим, когда тот, кто сначала нажимает подтверждение, но я не могу понять, как изменить его обратно на доступный, если гость решит не платить или просто закрывает браузер. Я искал SO для ответов, но на самом деле я не нашел окончательного ответа. заранее спасибо

Related of "Как предотвратить состояние гонки в онлайн-бронировании отеля"

Одним из решений является добавление двух столбцов в таблицу в базе данных. Один столбец – идентификатор сеанса или идентификатор пользователя или любой пользователь, которому предлагается комната. Второй столбец – это метка времени, указывающая, когда это предложение истечет.

Затем в вашем приложении отображаются только те комнаты, у которых есть истекшая отметка времени в столбце удержания. (Установите начальную временную метку на 0, чтобы она начиналась.) Когда выбрана комната, снова проверьте столбец. Если там есть неизвестная временная метка, пользователь получает сообщение «извините, вы были слишком медленны». В противном случае поместите там отметку времени на 15 минут в будущее или что-то еще, и продолжайте.

Вы часто это видите на туристических сайтах и ​​сайтах по покупке билетов, где говорится что-то вроде «Мы удерживаем эти места для вас еще 14 минут. Пожалуйста, завершите сделку к тому времени или она будет выпущена бла-бла-бла».

Я тоже поеду в ожидающее состояние. Вы можете сохранить состояние вместе с идентификатором сеанса этого пользователя и иметь cronjob, который удаляет все ожидающие состояния, у которых есть истекшие идентификаторы сеанса, связанные с ними.