独立した編集を行う機能を備えた外部ソースからディレクトリを更新する

そのようなサイトがあります-RosYama 。 むかしむかし、彼らはハブについて彼について書いた 私は彼をサポートし、その過程で出会った小さな問題の解決策を共有したいと思います。 おそらくそれは誰かにとって興味深いでしょう。



さて。 RosYamaには2つのディレクトリがあり、外部ソースから更新されます。 これは、交通警察部隊のディレクトリと地域検察官のディレクトリです。 彼らは、 STSI検察総長の公式ウェブサイトからのデータで満たされています。 ただし、これらのサイトのデータは誤っていることがあり(たとえば、ニジニノヴゴロドの交通警察のインデックス)、ときには十分に迅速に更新されないことがあります。 そして、ユーザーは最新のデータを使用したいのでそれについて教えてくれます。



公式サイトからのデータの単純なミラーリングの古典的なシステムでは、この問題は解決できません。 定期的な更新を拒否し、全員が間違ったデータを使用するか、次の更新までに編集内容が消去されます。



頭に浮かぶ最初の解決策は、すべての手動編集を入力する別のディレクトリを作成して、毎日の更新の直後にロールバックできるようにすることです。 ただし、このオプションは、そのような手動編集がいつか不要になる(公式サイトが正しいデータの送信を開始する)という点で悪く、少し後には間違っています(ユニット司令官が1か月半で2回変更しました)。



そのため、スマートシステムを柔軟に同期することが決定されました。



交通警察と検察のディレクトリのコピーが作成されました。 これらのディレクトリには、最後の同期中に取得した情報が保存されます。 現在の同期では、受信した情報がディレクトリのコピーと比較され、変更されたデータが検出され、このデータのみが戦闘ディレクトリで更新されます。 その結果、ディレクトリ内の誤ったデータに関する情報をユーザーから受け取った後、すぐにRosYamaを修正したり、交通警察に手紙を書いて自宅で修正したりすることができます。 その後、私は静かに休みます。なぜなら、交通警察が私のメッセージに従ってデータを修正すると、RosYamaが自動的にそれらをロードし、何も壊れないことを知っているからです。



興味がある場合 、actionFill_gibdd_reference()およびactionFill_prosecutor_reference()関数のgithub.com/RosYama/RosYama.2/blob/master/protected/controllers/SpravController.phpに実装コードが投稿されています。



PSそして、昨日私たちにも同じキーパーが現れました。



All Articles