![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| xlbaton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 26.9.2007 Репутация: нет Всего: нет |
Посоветуйте как лучше реализовать процедуру блокировки определенного документа, если он используется другими пользователями на других компьютерах. Т.е. нужно защитить от изменений на период правки другими пользователями, но при закрытии окна бровзера или выходе из документа блокировка должна быть снята.
Есть PHP и MySQL Спасибо |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
xlbaton, при открытии документа ставь блокировку. Убирай по таймауту 15 мин либо по кнопке "закрыть".
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
учитывая что пхп никак не связан с браузером, то блокировка имеет смысл только в момент чтения и записи. для файла есть такая функция flock(): http://php.ru/manual/function.flock.html
то же самое существует для блокировки таблицы в mysql если же нужно, чтобы никто не смог дотронутся до файла пока кто-то правит его в браузере - надо писать соответствующий мкрипт, который перед открытием файла проверяет нет ли записи, что этот файл уже открыт кем-то ещё. по перезаписи файла, данные о блокировки стираются однако, если правщик просто закроет браузер, то ничто не даст определить, что он кинул работу. поэтому нужно, чтобы перед проверкой на блокировку стирать старые проверки т.е. метод всё равно не 100% |
|||
|
||||
| theworldcreator |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Вряд ли к редактированию документа допускаются абсолютно все, а своих людей можно попросить включать JS. Тогда задача превращается в периодическую отсылку статуса AJAX-ом. Кто первый начал отправлять - тот и редактирует(редактирует в течение времени, пока статусы не перестанут приходить), остальным говорить "занято". Тоже не 100 %, но шанс повышается. Чтобы сделать все заведомо рабочим, нужно сохранять все версии файла. Тогда если такая система когда нибудь не сработает(например у редактирующего инет на пол-часа отключат. Редактировать ему это не помешает, но документ разблокируется и другие люди смогут с ним работать, следовательно их работа потеряется или же этот человек не сможет сохранить свои изменения, потому что документ будет заблокирован), то из-за ошибки изменения не удаляться, а погребуться в череде версий файла(соответственно будут восстановимы). |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
можно как с системами контроля версий: отмечать, когда человек взял данные на редактирование: тогда можно определить ситуации, когда два человека считали документ, внесли правки и последовательно сохранят данные, перетирая изменения друг друга. обнаружить и предложить перезагрузить документ на редактирование. ну, или чтоб не случалось паники и отчаяния, вывести для сравнения и вдумчивой корректировки ту версию, которая уже сохранена, и ту, которую только пытаются сохранить - пусть человек решает. при этом, в любом случае, не помешало бы иметь хотя бы короткую историю версий документа.
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Хм... занятно! Блокировать не надо вообще, а нужно прикрутить Web svn
Не так и сложно, в принципе... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| xlbaton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 26.9.2007 Репутация: нет Всего: нет |
Подробнее плиз, что за чудо, где взять и куда положить и т.д. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
тут звучало предложение skyboy, "как с системами котроля версий...". Ну а чего-ж не прикрутить и саму систему контроля. Понятно, что потребуются довольно приличные доделки на сервере, нужно поднять там svn, состряпать репозиторий, разместить svn клиент (Web svn, к примеру) Зато потом можно организовать чуть ли не одновременное и не особо конфликтное изменение исходников...
Впрочем, стоит оно того или нет, зависит от количества "админов" и объема подлежащих исправлению данных. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |