Временное бронирование билетов - PullRequest
0 голосов
/ 24 декабря 2011

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

Ответы [ 3 ]

4 голосов
/ 24 декабря 2011

Я оставляю его выбор в сеансе и сохраняю базу данных только после того, как он подтвердит бронирование.

1 голос
/ 24 декабря 2011

Это проблема, которая часто возникает на сайтах продажи билетов и розничной торговли. Дилемма, с которой часто сталкиваются пользователи, заключается в том, что они покупают товар (в небольшом количестве) или заказывают определенное место только для того, чтобы обнаружить, что ресурс больше недоступен, потому что другой пользователь нажал «Подтвердить», прежде чем он сделал ...

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

После осуществления оплаты, проверки и проверки временных данных можно выполнить фиксацию в главной таблице «транзакции» и обновить таблицу «ресурсов» (мест) с определенными данными.

Этот подход позволяет улучшить учет параллельных транзакций, а также аудит активности пользователей и / или состояния ресурсов на определенный момент времени.

0 голосов
/ 24 декабря 2011

Хотя решение @Gigi является разумным, оно не является полным.

Вы должны каким-то образом зарезервировать места, выбранные посетителем, в противном случае другой посетитель, посещающий одновременно, может зарезервировать те же места.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...