Я работаю на платформе MarketPlace с резервированием. Есть специалисты, которые создают возможности. Доступность создается с периодами, например, с 8:00 до 17:00. Это период, который сохраняется в mongodb. Заказчик выбирает период 1 час. (Календарь для клиента генерируется динамически с периодом 1 час), например: в период с 8:00 до 17:00, период: 8: 00-9: 00:00, 9:00 am 10:00 и т. Д.Модель параллелизма mongodb doctrine symfony
поэтому невозможно, чтобы 2 клиента одновременно резервировали один и тот же период.
Когда клиент выбирает период и нажимает кнопку «книга», объект резервирования сохраняется в сеансе. Клиент покупает эту бронь и после того, как объект бронирования будет сохранен в коллекции резервирования.
Как сделать для «блокировки» периода выбора по первому клиенту и предотвратить второй клиента, который хочет зарезервировать тот же период?
И как я могу исправить таймер на 10 минут, а если нет оплаты за период «доступности», разблокировать этот период в календаре? Как создать хронометр, синхронизированный с сервером, и перенаправить на главную страницу при истечении времени ожидания? Должен ли я создать временную коллекцию с резервированием? Или сохранить резервирование объекта в моей коллекции? Бронирование со статусом «в процессе»?
Я использую symfony 3 и mongodb с учением.
спасибо.
Спасибо за ваш ответ. Если я использую доктрину. Это то, что операции всегда атомарны? – Oneill
Да и доктрина ничего не могут с этим поделать - это особенность монгодба. Вам просто нужно проверить результат этого обновления - он должен вернуть количество измененных строк. Если он равен нулю - это означает, что время зарезервировано. – vuliad
Благодарим за помощь! – Oneill