Работая над моим первым проектом php / Codeigniter, я искал в сети информацию о блокировке доступа к редактированию данных и не нашел очень много информации.
Я ожидаю, что 2 пользователя будут пытаться редактировать одну и ту же форму одновременно.
По моему опыту (в мире состояний BBx, filePro и других приложений RAD) редактируемые данные блокируются с помощью пессимистичной блокировки - один пользователь имеет доступ к форме редактирования в данный момент. Второй пользователь в основном должен ждать, пока первый закончит работу. Я понимаю, что это можно сделать с помощью Ajax, отправляющего XMLHttpRequests для поддержки базы данных «lock».
Мир php, которому не хватает состояния, похоже, предпочитает оптимистическую блокировку. Если я правильно понимаю, это работает так: оба пользователя получают доступ к данным, и каждый из них записывает версию данных «до изменений». Перед сохранением их изменений данные снова извлекаются и сравниваются с версией «до изменений». Если две версии идентичны, то изменения пользователей записываются. Если они разные; пользователю показано, что изменилось с тех пор, как он / она начал редактировать, и добавлен какой-то механизм для устранения различий, или пользователю отображается сообщение «Извините, попробуйте еще раз».
Мне интересен любой опыт, который люди здесь имели при реализации как пессимистической, так и оптимистической блокировки. Если есть какие-либо библиотеки, инструменты или инструкции, я буду благодарен за ссылку.
Спасибо