2014-01-27 81 views
1

我正在开发即时消息应用程序,该应用程序使用消息ID,消息内容和排序时间戳的列记录数据库中的每条消息。来自客户端的时间戳

在插入到数据库之前,我一直使用PHP的time()函数添加时间戳,但是在我看来,这可能会导致问题。如果用户快速提交两条或更多条消息,则服务器可能会将它们乱序处理,并将它们混淆在数据库中。

我正在考虑使用javascript的Date.getTime()方法。这种方式的时间戳记录了用户提交信息的时间,而不是它处理完成的时间(希望这两个数字不是不同)。

这带来了两个问题:

  • 的数据可能被操纵。我必须仍然使用PHP的time()函数,并且只在彼此在一分钟左右时间内提交(这不是一个完美的解决方案)。
  • 我真的不知道计算机的时间如何同步。提交的时间看起来像是用户在中国的时间是多少?

我确定这是一个始终处理的问题。那里有什么样的解决方案?

+1

由于时区差异,不准确的时间同步和数据操作,您应该只能使用服务器时间。就消息顺序而言,您可以简单地发送递增顺序或顺序与消息一起确定消息线程中的顺序。 – joe42

回答

5

计算机时间不是很好同步 - 你的应用程序绝对不应该指望这一点。在我的脑海

合理的解决方案:

  • 客户端使用时间戳只为找出其中一个客户端提交的消息序列。
  • 使用服务器时间戳一切

还要注意的是客户端的时间戳可以在任何时区(用户可以改变他们的时区),所以客户端的时间真的是唯一有用的在与其他时间戳从比较同一个客户端