|
|
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть задача - разработать систему хранения сообщений с приборов. Есть центральный - сервер БД, системное время которого принимается эталонным. К серверу подключены клиентские приложения, которые получают сигналы с приборов и пишут их в БД с отметкой о времени поступления сигнала. Локальное системное время может изменяться, и при этом сообщения с приборов должны быть сохранены временем сервера. В случае потери связи с сервером клиент переключается в автономный режим и продолжает накапливать сообщения с приборов. Когда связь восстановится, все накопленные сообщения должны быть записаны БД временем сервера. Существуют ли технологии для обеспечения независимости от локального системного времени? И вообще, существует ли решение у этой задачи? Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2011, 13:54 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
host.13, Код: plaintext Любая субд может вернуть свое время (время сервера) какойто функцией. Пишите ее результат в таблицу, рядом в соседнюю ячеку можно писать локальное время с клиента - на всякий. Клиенты даже менять не потребуется - просто сделайте тригер "до вставки в таблицу" в котором будете заполнять столбец системной датой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2011, 14:23 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
DeathHand, Это понятно. А как определить сколько времени на сервере, если он не доступен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2011, 23:54 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
host.13DeathHand, Это понятно. А как определить сколько времени на сервере, если он не доступен? Никак. Сохраняйте локальное время клиента, потом при записи на сервер пересчитывайте. Можно упростить задачу, храня разницу во времени, но это, строго говоря, неточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 00:23 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
Можно ещё упростить задачу, синхронизируя время на сервер и клиентах. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 01:00 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
host.13, очевидно, что время нужно хранить в UTC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 08:17 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
host.13DeathHand, Это понятно. А как определить сколько времени на сервере, если он не доступен?Когда связь host.13Когда связь восстановится, все накопленные сообщения должны быть записаны БД временем сервера . host.13Локальное системное время может изменяться, и при этом сообщения с приборов должны быть сохранены временем сервера. У Вас во всех случаях данные сохраняются временем сервера. Не зависимо от того, что после разрыва - время сообщения < времени сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 09:24 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
host.13А как определить сколько времени на сервере, если он не доступен? Ненада ничего определять. Когда пишите в БД - тогда и подставляйте время сервера. Писать в БД когда сервер не доступен - не возможно, согласитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 09:25 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
DeathHandhost.13DeathHand, Это понятно. А как определить сколько времени на сервере, если он не доступен?Когда связь host.13Когда связь восстановится, все накопленные сообщения должны быть записаны БД временем сервера . host.13Локальное системное время может изменяться, и при этом сообщения с приборов должны быть сохранены временем сервера. У Вас во всех случаях данные сохраняются временем сервера. Не зависимо от того, что после разрыва - время сообщения < времени сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 09:29 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
JoFanhost.13, очевидно, что время нужно хранить в UTC что дальше? Тянуть его с сайта IERS? Если уж сервер бывает не доступен, к интернету клиентам точно постоянного доступа нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 09:42 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
DeathHandJoFanhost.13, очевидно, что время нужно хранить в UTC что дальше? Тянуть его с сайта IERS? Если уж сервер бывает не доступен, к интернету клиентам точно постоянного доступа нет. Насколько долго сервер бывает не доступен ? Насколько при этом будет рассинхрон по времени ? Если в допустимых пределах, то значит нет проблем т.к. при появлении сервера будет синхронизация по нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 10:06 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
Спасибо всем откликнувшимся. Сообщения должны писаться в БД не временем сервера, а временем получения сообщения.Задача сводится к тому, чтобы определить время сервера даже тогда, когда он недоступен. Думаю так: в момент неудачи записи в БД на клиенте запускается таймер, раз в секунду пытаемся произвести записи и в момент, когда нам это удается, запрашиваем время серера. Время получения сообщения = (время сервера - сколько таймер натикал). Кто-нибудь так вообще делает? Может, другие методы есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2011, 16:35 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
host.13Кто-нибудь так вообще делает? Может, другие методы есть? Как я уже сказал: периодически синхронизируй время контроллеров и на сервере. Контроллеры, у которых часы сильно спешат - на помойку. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2011, 17:36 |
|
||
|
Проблема времени
|
|||
|---|---|---|---|
|
#18+
host.13Спасибо всем откликнувшимся. Сообщения должны писаться в БД не временем сервера, а временем получения сообщения.Задача сводится к тому, чтобы определить время сервера даже тогда, когда он недоступен. Думаю так: в момент неудачи записи в БД на клиенте запускается таймер, раз в секунду пытаемся произвести записи и в момент, когда нам это удается, запрашиваем время серера. Время получения сообщения = (время сервера - сколько таймер натикал). Кто-нибудь так вообще делает? Может, другие методы есть? Вы можете синхронизировать время клиентов с временем сервера - в момент, когда сервер доступен. Таким образом, приблизительно получите в любой момент времени - на клиенте то время, которое сейчас на сервере. Время на клиенте же - тоже идет, или я чего-то не понимаю? :) Правильно позиционируйте свою задачу. Ваша задача - не по разработке, а по организации возможности получения актуального времени :) Из данного заявления - следует, что нечерта трогать клиенты и сервер. Просто - нужно организовать процесс синхронизации. Не разработать, а организовать. Заметьте разницу. И вообще, давайте уберем сферичность. Что за приборы? По чем коннект? Какие контроллеры? Потому как - вся серия S7 к примеру - имеет часики встроенные, которые с панелью держат железобетоннейший коннект, и время там идет четко (иначе датчик с панелью выкидывают нахер). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2011, 17:44 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37532776&tid=1541940]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 475ms |

| 0 / 0 |
