2013-06-09 3 views
0

Я работаю над разработкой онлайнового веб-приложения на PHP. Система касается системы бронирования мест для туристической компании. У меня есть форма бронирования, содержащая поле выбора, в котором есть список кода тура. Всякий раз, когда пользователь выбирает код тура, Ajax-запрос получает доступное количество мест для этого кода тура. После этого пользователь выбирает количество мест, которые он запрашивает, чтобы забронировать и заполнить данные о таком количестве пассажиров в форме и представить форму.Логический поток, необходимый для онлайн-бронирования в режиме реального времени в PHP?

В этой системе онлайн может возникнуть ситуация, следующим образом:

User1 и user2 вошел в попытке заказать места для tourA. Для тура доступны только 10 мест. User1 хочет забронировать 7 мест, а user2 хочет забронировать 5 мест. Оба нажимают ссылку на форму бронирования, и оба получают номер доступных мест как 10. Оба начали заполнять форму, так как форма немного длинна. Оба берут другое время, чтобы заполнить форму и отправить в соответствии с тем, что набрали скорость. Оба пользователя думают, что они получат необходимое количество зарезервированных мест. Но обе подают форму с небольшой разницей времени, которую она сама считает, что пользователь сначала подаст заявку, а другой пользователь получит сообщение об ошибке, что соответствующее количество мест недоступно. Итак, здесь userA путают, что, поскольку он получил сообщение о том, что число мест является availebe теперь после отправки формы, он получает сообщение, требуется количество мест, которые недоступны.

Как я мог избежать такого состояния, как указано выше? Мне нужен логический поток за системой бронирования в реальном времени. Кто-нибудь, пожалуйста, объясните мне это и как достичь этого в php.

Я думаю о том, как только пользователь выбирает количество мест; используя ajax, я обновляю поле в таблице базы данных, которое поддерживает это доступное количество мест и записывает это количество мест для этой сессии. Но здесь может возникнуть кодификация, например, если пользователь выбирает места и начинает заполнять форму, но по какой-либо причине, если он не отправляет форму бронирования, проблема возникает из-за того, что мы удалили необходимое количество мест из db, но процедура бронирования не завершено пользователем. Итак, как вернуть это обратно, а также обновить таблицу, а затем другие пользователи, которые хотят забронировать места, которые им нравятся, что количество мест недоступно, и они исчезнут и не будут проверять его снова. Из-за этого бизнес туристической компании может снизиться.

Обратите внимание, что каждый пользователь должен войти в систему для бронирования мест.

Друзья, вы можете найти этот вопрос как домашнюю работу, но здесь у меня нет твердого логического решения. Прошу вас, пожалуйста, объясните мне логический поток системы, чтобы преодолеть такую ​​ситуацию. Если у кого-нибудь есть простой пример кода в PHP для этого для справки, он также будет полезен для меня.

Ожидаемый положительный ответ

Thank you!

ответ

1

Действительно нет идеального способа сделать это. Вы в основном есть 3 варианта

  1. зарезервировать ресурс, как только пользователь указывает, что они хотят, чтобы заказать его (это то, что nycballet.com делает)
  2. Резервный ресурс, когда пользователь совершает на покупку (это какая путешествует).
  3. Пусть обе пользователи покупают ресурс и есть средство для человека откатить одну из операций (ака избыточных бронирования)

Что вы выбираете в конечном счете, является бизнес-решением, и тот, который зависит от формы вашей воронки и насколько чувствительны ваши пользователи к проблемам UX.

+0

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