лучшая стратегия для тайм-аута транзакции / сессии? - PullRequest
2 голосов
/ 24 сентября 2010

Я работаю над веб-приложением, которое автоматизирует процесс бронирования с помощью API Календаря Google и PHP.Когда пользователь впервые выбирает дату, мой сценарий создает «предварительное» событие в календаре, чтобы другие пользователи не могли выбрать ту же дату.Однако, чтобы избежать распространения предварительных дат, созданных пользователями, которые не выполняют, я хочу наложить временное ограничение на процесс транзакции, поэтому, если пользователь покидает приложение или занимает слишком много времени, предварительная дата будет удалена.из календаря (и, следовательно, доступны для других пользователей).

В настоящее время мы храним встречи в базе данных MySQL, а также в Google Cal, поэтому вот моя текущая стратегия: когда предварительная встреча является первойсоздан, сохраните предварительную встречу в БД с отметкой времени.Затем запланируйте задание cron (возможно, каждый час или около того), которое просматривает базу данных и удаляет предварительные резервирования на основе возраста их метки времени (удаляя их как из базы данных, так и из Google Cal).

Теоретически, это должно работать.Тем не менее, мой вопрос заключается в следующем: есть ли более простой / более элегантный способ сделать это, о котором я не думаю?У кого-нибудь есть лучшее решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 02 октября 2010

Не уверен, что это «лучше», но если основной целью является ограничение беспорядка, вы можете ограничить количество предварительных событий в течение заданного периода времени, и ваша задача cron удалит все, кроме самого нового N, в течение каждого периода.Таким образом, календарь не может засориться, если у вас есть внезапный поток предварительных событий, но вы можете держать их дольше, когда есть меньше активности, предоставляя людям большее окно для подтверждения их бронирования в течение медленных периодов.

0 голосов
/ 24 сентября 2010

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

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