|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.09.2011, 20:30 | #1 |
Пользователь
Регистрация: 14.07.2008
Сообщений: 47
|
Метод синхронизации
Привет народ, как на счет небольшой порции теории? мой вопрос не относится напрямую к PHP, разве что косвенно - PHP как никак связан с серверами.
Сразу скажу, если вы действительно захотите мне помочь то надо вникать. Вообщем я пытаюсь придумать рабочий способ синхронизации данных через сервер. Данные представляют из себя список записей. так вот элементы списка мне надо синхронизировать. Синхронизация происходит раз в N'ное количество времени, ну скажем раз в два часа. так вот за эти два часа данные на сервере и клиенте изменяться. Клиент добавил несколько новых записей и удалил несколько старых, в свою очередь на сервере, благодаря синхронизации с другими клиентами также произошли изменения. в итоге мы видим что то вроде этого Я думаю сделать так: каждая запись имеет ID (у меня это A,B,C . . ), который может дать только сервер. Соответственно у Клиента, при появлении новых записей, они не имеют ID. идентификацию новые записи получат только после синхронизации. Старые записи, которые удалили в Клиентском приложении, на самом деле не удаляются до синхронизации, они просто помечаются как удаленные. Стадии синхронизации: 1) формируем запрос на сервер с такими параметрами: удаленные записи: B, C Новые записи: мы еще не знаем их ID, поэтому грубо говоря 1, 2 2) Сервер приняв эту информацию. -удаляет записи которые клиент пометил как удаленные (B, C) -добавляет новые присланные записи и задает им ID (G,H) - отправляет обратно полный список всех записей 3) приняв ответ от сервера Клиент начинает сверять записи. - обнаруживает лишнюю запись у себя и удаляет ее (A,E) - Добавляет недостающие записи (F) - новым записям, которые до этого не имели ID задает этот параметр (G,H) 4) Сервер и Клиент имеют одинаковый список D,F,G,H Примерно так. Хотелось бы узнать у более опытных людей насколько адекватный вариант я придумал. конечно с радостью выслушаю советы и предложения (ну если они будут дельные конечно). Просто я могу в чем то заблуждаться и всегда надо знать взгляд со стороны. |
07.09.2011, 21:33 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
1. Как быть с записями, которые были просто отредактированы(изменилось само содержимое)?
2. Как планируете решить проблему одновременной синхронизации - нужно смещение какое-то для разных клиентов? 3. Сам процесс синхронизации лучше производить не по времени, а по запросу. 4. Удаление файлов с сервера - стрёмная штука(Вася работает над записью А, синхронизация, Пете не нужна запись А - он её удалил(отредактировал), синхронизация, .... Вася плачет). IMHO - это велик, да ещё и с кучей граблей. Cтремление похвально - но если вам для реальной работы и сейчас - то Git, SVN, Mercurial, ... Собственно - если планируете сделать что-то подобное, но своё - то вам по-любому нужно освоить парочку из них. Теория для "почитать" - Система Управления Версиями. По Git есть отличная книга "Магия Git" Ben Lynn, и клевая обучалка - GitHowTo. |
07.09.2011, 22:56 | #3 | |
Пользователь
Регистрация: 14.07.2008
Сообщений: 47
|
Цитата:
2. я еще не думал об этом. Я думаю решение будет как в любом другом случае одновременного доступа - первый ставит блокировку. соответственно если клиент нарвался на блокировку, он повторит синхронизацию на минуту позже. 3. Да это тоже будет, но лично мне нравится чтоб было как можно больше "автоматизма" 4. как я уже написал выше редактирование записи не подразумевается, поэтому такой вариант, я думаю, не получиться. Вообше Петя . . .Вася тоже, по идее, не мой случай. подразумевается что будет кто то один Либо петя, либо Вася. Допустим у Пети несколько устройств и надо чтоб все изменения которые он произвел на одном произошли и на других. При такой раскладе одновременная синхронизация крайне мала, но надо предусматривать все конечно. 5. Мне не для реальной работы, мне для собственного развития и опыта. это мое хобби так сказать. У меня есть дома сервер с PHP и SQL и я вот так с ним играюсь. Поэтому у меня нет нужды делать что то очень серьезное и надежное. может быть позже =) |
|
07.09.2011, 23:22 | #4 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
"Список записей" - текстовый файл, что ли? Или несколько файлов в директории? Пока вопросов больше, чем ответов... А вообще - начинайте уже писать код, в процессе сразу появятся новые идеи/способы_реализации/грабли. |
|
08.09.2011, 08:42 | #5 |
Пользователь
Регистрация: 14.07.2008
Сообщений: 47
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема синхронизации потоков | Teor | Общие вопросы .NET | 4 | 17.06.2011 15:50 |
Контроллер для синхронизации БД | Arkuz | C# (си шарп) | 2 | 21.04.2011 10:54 |
Прога для синхронизации каталогов | Andr3000 | Microsoft Office Excel | 4 | 30.03.2011 14:11 |
Особенности вертикальной синхронизации | Lotles | Компьютерное железо | 3 | 14.12.2010 17:48 |
Проблема синхронизации. | beda | Microsoft Office Word | 3 | 30.06.2010 13:37 |