Zend Framework параллелизма и AJAX - PullRequest
0 голосов
/ 18 ноября 2009

Я занимаюсь разработкой веб-приложения с Zend Framework. Это приложение для продажи билетов в кино. Приложение позволяет пользователям выбрать место, а затем купить билет. (Проблема похожа на классическое бронирование авиабилетов.) У меня две проблемы.

Проблема 1: Страница, на которой показаны все места, должна обновляться с помощью ajax (место зеленого цвета, если доступно, и красного цвета, если недоступно): каждое место - это div на странице. Например, если ПОЛЬЗОВАТЕЛЬ А просматривает страницу с местами, а другой ПОЛЬЗОВАТЕЛЬ Б покупает билет, соответствующее место должно стать красным для ПОЛЬЗОВАТЕЛЯ А без обновления страницы. Как я могу обновить каждый div? Я хотел бы использовать jquery, я пытался делать json-запрос для каждого div каждую секунду, но это слишком медленно. Есть идеи?

Проблема 2: Как я могу управлять параллелизмом? Если ПОЛЬЗОВАТЕЛЬ А и ПОЛЬЗОВАТЕЛЬ Б одновременно нажимают, чтобы купить один и тот же билет (билет на одно и то же место), что мне делать? Я использую движок InnoDB, но мне нужно управлять транзакцией в соответствующем контроллере?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 22 ноября 2009

Я бы, вероятно, решил проблемы 1 и 2 по-разному (как я видел на многих сайтах продажи билетов). После того, как пользователь выберет место, я обновлю место с отметкой времени в базе данных. Это сделало бы вывод, что место занято. Затем у пользователя есть 1 минута (или некоторое количество времени) для покупки билетов. Если этого не произойдет, отметка времени изменится на ноль.

sql было бы довольно просто. По сути, система просканирует эту таблицу на предмет лица B и скажет, что вернет все доступные места (строки в базе данных), где отметка времени равна нулю или (сейчас - отметка времени> 1 минута).

0 голосов
/ 18 ноября 2009

Я думаю, что вы можете использовать Comet для задачи 1, чтобы передать данные с вашего веб-сервера в браузер.

К сожалению, я не знаю, как использовать это практически.

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