- PVSM.RU - https://www.pvsm.ru -
Есть такой сайт — РосЯма [1]. Когда-то давно о нём даже писали на хабре [2]. Я его поддерживаю и хочу поделиться решением одной маленькой проблемки, с которой столкнулся в процессе. Возможно, кому-то это будет интересно.
Ну так вот. На РосЯме есть два справочника [3], которые обновляются из внешних источников. Это справочник подразделений ГИБДД и справочник региональных Прокуратур. Они заполняются данными из официальных сайтов ГИБДД [4] и Генпрокуратуры [5]. Однако данные на этих сайтах иногда оказываются ошибочными (например индекс Нижегородского ГИБДД), а иногда обновляются недостаточно оперативно. И пользователи сообщают нам об этом, поскольку хотят пользоваться актуальными данными.
В классической системе простого зеркалирования данных с официальных сайтов эта проблема неразрешима. Либо мы отказываемся от регулярных обновлений и все пользуются неверными данными, либо наши правки будут затёрты очередным обновлением.
Первое решение, которое приходит в голову — создать ещё один справочник, в который занести все ручные правки, с тем, чтобы они накатывались сразу после ежедневного обновления. Однако этот вариант плох тем, что такая ручная правка когда-нибудь станет ненужной (официальный сайт начнёт присылать верные данные) а чуть погодя и просто ошибочной (командир подразделения поменялся два раза за полтора месяца).
Поэтому было решено сделать умную систему гибкой синхронизации.
Были созданы копии справочников ГИБДД и Прокуратур. В этих справочниках хранится информация, приехавшая при прошлой синхронизации. При текущей синхронизации, полученная информация сравнивается с копией справочника, выявляются изменённые данные, и уже только эти данные и обновляются в боевом справочнике. В результате, получив информацию от пользователя о неверных данных в справочнике, можно сразу же внести корректировки на РосЯме, а так же написать письмо в ГИБДД, с тем, чтобы они у себя подправили. После чего я спокойно отдыхаю, потому что знаю, что когда ГИБДД подправит данные по моему сообщению — РосЯма их подгрузит автоматически и ничего при этом не сломается.
Если кому интересно — код реализации выложен на гитхабе: github.com/RosYama/RosYama.2/blob/master/protected/controllers/SpravController.php [6] функции actionFill_gibdd_reference() и actionFill_prosecutor_reference()
P.S. А ещё у нас вчера появилась такая же ключница, как и на хабре, вот )))
Автор: fezeev
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/kraudsorsing/15493
Ссылки в тексте:
[1] РосЯма: http://rosyama.ru
[2] даже писали на хабре: http://habrahabr.ru/post/120286/
[3] два справочника: http://rosyama.ru/sprav/
[4] ГИБДД: http://www.gibdd.ru/
[5] Генпрокуратуры: http://www.genproc.gov.ru/
[6] github.com/RosYama/RosYama.2/blob/master/protected/controllers/SpravController.php: https://github.com/RosYama/RosYama.2/blob/master/protected/controllers/SpravController.php
Нажмите здесь для печати.