Lextasy
Новичок
Одновременная работа нескольких редакторов в системе
Привет всем!
Пишу систему, в которой необходима возможность работы нескольких пользователей одновременно. То есть нужно предусмотреть случай конфликта, когда несколько пользователей редактируют одни и те же поля. В разделе по конкретной дате есть несколько больших полей (возможно до 4-6 страниц текста как говорит заказчик). Поэтому топорный вариант LOCK TABLE не очень кофортен для пользователя (пока один человек пишет одно поле другие ничего не могут делать). Самому по этоиу поводу пришли следующие мысли:
1. Разбить большие поля по разным таблицам. Тем самым решили проблему с локом таблицы.
2. Пока пользователь редактирует поле писать каждую минуту например в базу через аякс информацию, какое поле он редактирует. Конфликтующий пользователь в свою очередь аяксом это дело считывает и если поле занято, то кнопка сабмит неактивна ну или поле неактивно. При последнем аякс запросе (при котором выясняется что поле свободно) берём новый вариент поля, аяксом его подгружаем, разлочиваем таблицу, делаем поле доступным для редактирования. Но тут тоже проблема - если юзер чтото напишет и на 5 минут задумается, то другой юзер перехватит управление полем... Но тут можно что-то придумать. Эти поля у меня сворачиваются через scriptaculous, тогда можно сделать так, чтобы при разворачивании одного поля сворачивались другие и при сворачивании писать аяксом что поле свободно. Вобщем, звучит коряво, но если бы я мог назвать заказчика стало бы понятно зачем всё это нужно))) В голове сейчас каша, поэтому подобных вариантов аля "правой рукой левое ухо" я могу придумать много, но нужно выбрать наиболее правильный и удобный...
Может кто то посоветует какой-то более гибкий вариант?
Привет всем!
Пишу систему, в которой необходима возможность работы нескольких пользователей одновременно. То есть нужно предусмотреть случай конфликта, когда несколько пользователей редактируют одни и те же поля. В разделе по конкретной дате есть несколько больших полей (возможно до 4-6 страниц текста как говорит заказчик). Поэтому топорный вариант LOCK TABLE не очень кофортен для пользователя (пока один человек пишет одно поле другие ничего не могут делать). Самому по этоиу поводу пришли следующие мысли:
1. Разбить большие поля по разным таблицам. Тем самым решили проблему с локом таблицы.
2. Пока пользователь редактирует поле писать каждую минуту например в базу через аякс информацию, какое поле он редактирует. Конфликтующий пользователь в свою очередь аяксом это дело считывает и если поле занято, то кнопка сабмит неактивна ну или поле неактивно. При последнем аякс запросе (при котором выясняется что поле свободно) берём новый вариент поля, аяксом его подгружаем, разлочиваем таблицу, делаем поле доступным для редактирования. Но тут тоже проблема - если юзер чтото напишет и на 5 минут задумается, то другой юзер перехватит управление полем... Но тут можно что-то придумать. Эти поля у меня сворачиваются через scriptaculous, тогда можно сделать так, чтобы при разворачивании одного поля сворачивались другие и при сворачивании писать аяксом что поле свободно. Вобщем, звучит коряво, но если бы я мог назвать заказчика стало бы понятно зачем всё это нужно))) В голове сейчас каша, поэтому подобных вариантов аля "правой рукой левое ухо" я могу придумать много, но нужно выбрать наиболее правильный и удобный...
Может кто то посоветует какой-то более гибкий вариант?