parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

моё мнение: все размышления о судьбах мира на донора; конкретный вариант

Александр Петросян (PAF) 15.11.2005 12:31 / 15.11.2005 12:37

так сделали в CVS,
так сделали мы в Imprimatur2.

клиент отправляет «у меня есть это», получает «на тебе, обнови вот это».

что до «много», то предлагаю такой вариант:
сначала идёт вопрос о том, какие группы файлов обновились:
клиент:
а у меня есть:
/admin/, тут (на любом уровне вложенности) последний раз что-то менялось в "2005-11-15 09:28 GMT"
/news/, а тут (на любом...) последний раз... в "2005-09-01 09:00 GMT"
...

сервер:
дорогой, а у меня вот
/news/ обновлялись позже, чем у тебя, пришли подробнее
/products/ обновлялись позже, чем у тебя, пришли подробнее

клиент:
да? а что именно у тебя новее, у меня в /news/ есть
first.html << такой-то timestamp
second.html << сякой-то
inner/first.html << ещё какой-то
...
и в /products/ у меня это:
..
сервер(последний ответ):
вот тебе
/news/first.html << его timestamp "такой-то"
/products/second.html << его timestamp "сякой-то"
в таком духе можно сделать в два шага, если будет всё ещё много данных, сделать в три шага, по уровням вложенности.

т.к. собираетесь делать средствами parser, то будет проблема выставить на клиенте дату и время принятого с сервера файла.
это для обновлений некритично.
пусть файл будет у клиента чуть новее, важно, что запрос на обновление будет правильно присылать файлы.

сдвиг из $file.mtime в GMT в parser есть:
^date:roll[tz;GMT]
преимущество этой схемы, что в случае слишком большого ответа сервера вполне можно его оборвать.
и вообще процесс можно оборвать в любой точке.