Я реализовал пессимистическую блокировку в своем приложении CakePHP, совместно используемом различными контроллерами.По сути, при доступе к странице запись записывается в таблицу, указывая, что эта запись этой модели редактируется этим пользователем вместе с отметкой времени.Каждые 30 секунд при вызове Ajax эта временная метка этой записи обновляется, указывая, что страница все еще используется.Если кто-то пытается войти на страницу, доступ запрещен.Если страница оставлена, «блокировка» истекает в конце этих 30 секунд.
В целом, запрос будет:
- 3, когда страница загружена (очистить всезаблокировать старше 1 часа (УДАЛИТЬ), проверить, не используется ли уже страница (ВЫБРАТЬ), а если нет, создать блокировку (ВСТАВИТЬ));
- 2 при обновлении блокировки (проверьте, не заблокирована ли уже страница (ВЫБРАТЬ), если нет, обновите отметку времени блокировки (ОБНОВЛЕНИЕ));
Мне интересно, следует ли использовать Cache система, поскольку это не постоянное хранилище данных (которое, очевидно, должно использовать базу данных), а просто нечто временное.Может ли это быть быстрее, чем база данных?(но я не уверен, так как мой кеш - это просто кеш файлов).