2012-08-10 60 views
0

我有一个存储在MySQL数据库中的时间戳,并且我想定期(比如说每秒)更新当前时间和存储在数据库中的时间戳值之间的差异(当然,不需要重新加载页面)以显示类似一个5分钟的倒计时器。马上。我想使用setTimeout定期触发一个AJAX请求获取这个值。这是最好的方法吗?相反,我应该只运行一个客户端计时器,然后每分钟同步它与服务器端时间戳?如何定期更新网页上的服务器端值?

注意:这个计时器是负责我网站上的一个重要功能,所以它应该是相当准确的。

编辑:我不需要一个cron作业,我只需要一个倒计时器,它可以在5:00到4:59到4:58等网页上自动更新。如果您熟悉Megaupload在关机之前所拥有的功能,我需要类似的东西。

+1

'every second' =糟糕的主意。很多网络流量,很多数据库流量,只是为了追踪时间?计算机已经有一些东西叫做“时钟” - 我被告知它们非常受欢迎;-) – DaveRandom 2012-08-10 13:21:44

+0

我该怎么做?它会是客户端计算机的时钟吗?我需要确保这个计时器是准确的,不能被客户篡改。 – hesson 2012-08-10 13:23:38

+0

这里的用例是什么?您是否想要禁用某些内容或阻止用户在某段时间过后提交表单或其他内容? – DaveRandom 2012-08-10 13:24:29

回答

1

由于Javascript工作方式的性质,确切的计时器几乎不可能实现(请参阅此处了解更多详细信息)。

但是,你可以做一些非常接近它的事情,我建议你想做的是做所有的客户端(这是用户篡改,但最小的资源消耗),更重要的是使用服务器端验证以防止用户篡改它。因此,您在开始时在数据库中设置了一个值,表示“不接受x时间之前的提交”,然后客户端可以处理计时器。

Here is a very small example of how it can be done

1

这取决于你想完成什么。

如果您需要处理一些与网站相关的内容,例如每5分钟一次,然后使用cron作业。

如果要通过更新每个示例的评论列表来提高用户体验,请使用ajax。

1

所以你想要一个服务器,所有这些压力。

可以假设服务器和客户端上的时钟都有第二个持续时间长于两者,并且可能需要一周(如果很差)分歧。

但客户可能认为这是在午夜1972年1月1日,但你的服务器认为它是14点25分上周五8月10日2012年

所以只是通过从服务器到客户端该日期。计算差异。在页面上,您可以将服务器日期/时间放在页面上,只需使用Javascript。

至于网站(服务器位)只依赖服务器的时间。你可以控制。

倒计时器只是一个愉快的事情。但服务器的东西是你的资产和你做生意的地方。如果你依靠客户,一些讨厌的人可以重置时间。

相关问题