Answer
- オフラインのユーザが同期する場合:動作します。
- サーバー間同期の場合:動作します。
- FileMaker Serverに直接接続している、同期しないユーザの場合:正しく動作しない場合があります。
解説
- オフラインのユーザのみが同期:MirrorSyncはすべての変更箇所のリストを取得し、自動でオフラインのユーザの時間帯を検知して、それに応じて時刻を調整します。
- サーバー間で同期:MirrorSyncは、FileMaker Serverの現在の時刻を検知してそれに応じて調整します。オフラインのユーザの場合と同様です。
- FileMaker Serverに直接接続している、同期しないユーザ:自動では対応しません。
FileMaker Serverに直接接続している、同期しないユーザが異なるタイムゾーンで利用する場合の例と対応方法
このケースで動作させるには、対応が必要です。少し複雑なので、例を示して解説しましょう。
ケース1
- FileMaker Serverがニューヨークでホストされているとします。
- ニューヨークにいるユーザが、東部標準時の午後12:30に同期を実行します。
- 30分後(東部標準時の午後1時、太平洋標準時の午前10時)に、サンフランシスコにいるユーザがサーバ上のレコードを変更します。
FileMaker Serverの動作からすると、ニューヨークにあるサーバ上の修正情報のタイムスタンプは午前10時になります。東部標準時には変換されません。また、FileMaker Serverはユーザの時間帯の情報を保存しないので、それが太平洋標準時なのかどうかはわかりません。基本的には、不正確な値になってしまいます。次回の同期を実行するときに、MirrorSyncは最後の同期である午後12:30以降に変更されたレコードをリクエストします。するとサンフランシスコのユーザが加えた変更は、最後の同期よりも後のものであるにもかかわらず抜けてしまいます。
ケース1への対応方法
- テーブルに、「Modification timestamp」という名前の、通常の修正情報のタイプスタンプがあるとします。
- 「Host modification timestamp」(あるいは任意の名前)の新規フィールドを作り、以下の計算値が自動入力されるように設定します(「Modification timestamp」の部分は自分のファイルのフィールド名に置き換えてください)。
Let ( x = Modification timestamp ; Get ( ホストのタイムスタンプ ) )
重要:「フィールドに既存の値が存在する場合は置き換えない」のチェックを、オフにする。 - このフィールドを同期のレイアウトに追加で配置し、通常の修正情報のタイムスタンプを同期のレイアウトから削除します。
通常の修正情報のタイムスタンプの代わりに、このフィールドをMirrorSyncの構成のプロセスで修正情報のタイムスタンプとして使用します。
これは、修正情報のタイムスタンプとしてユーザの時刻ではなくFileMaker Serverの時刻を使用して動作します。このようにすると、サンフランシスコのユーザが太平洋標準時の午前10時にレコードを変更すれば、FileMaker Serverは「Host modification timestamp」フィールドに午後1時(変更されたときのサーバの現地時間)と保存します。これで、MirrorSyncは異なる時間帯で正常に動作します。
原文:Does MirrorSync work with timezones? http://docs.360works.com/index.php/MirrorSync_advanced_topics#Does_MirrorSync_work_with_timezones.3F
コメント
0件のコメント
サインインしてコメントを残してください。