0

我有一个存储在 MySQL 数据库中的时间戳,我想定期(比如每秒)更新当前时间与存储在数据库中的时间戳值之间的差异(当然没有重新加载页面)以显示类似 5分钟倒计时。现在。我正在考虑使用 setTimeout 定期触发获取此值的 AJAX 请求。这是最好的方法吗?相反,我应该只运行一个客户端计时器,然后每分钟左右将其与服务器端时间戳同步吗?

注意:此计时器负责我网站上的一项重要功能,因此它应该相当准确。

编辑:我不需要 cron 工作,我只需要一个倒数计时器,它会自动在网页上更新,例如从 5:00 到 4:59 到 4:58 ......等等。如果您熟悉 Megaupload 关闭之前的那个,我需要类似的东西。

4

4 回答 4

1

这取决于你想完成什么。

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

如果您想通过更新每个示例的评论列表来改善用户体验,请使用 ajax。

于 2012-08-10T13:25:48.693 回答
1

因此,您需要一台承受所有压力的服务器。

可以假设服务器和客户端上的时钟都有一秒钟,在两者上持续时间一样长,并且可能需要一周(如果非常糟糕)分歧。

但是客户端可能认为是 1972 年 1 月 1 日午夜,但您的服务器认为是 2012 年 8 月 10 日星期五 14:25。

因此,只需将该日期从服务器传递给客户端。找出差异。在页面上,您可以仅使用 Javascript 将服务器日期/时间放在页面上。

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

倒计时只是一种玩笑。但是服务器是您的资产,也是您开展业务的地方。如果您依赖客户,一些讨厌的人可以重置时间。

于 2012-08-10T13:28:26.547 回答
1

由于 Javascript 工作方式的性质,几乎不可能实现精确的计时器(有关详细信息,请参阅此内容)。

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

这是如何完成的一个非常小的示例

于 2012-08-10T14:09:04.150 回答
0

您可以制作一个执行此操作的脚本,并且可以每隔一秒左右运行一次,具体取决于您的服务器运行的操作系统,其中:

如果 linux { chronjob } http://www.thegeekstuff.com/2011/07/php-cron-job/

else if windows { windows scheduler }如何使用 windows 调度任务运行 PHP 脚本?

这是运行客户端脚本最安全、最有效的方式。

于 2012-08-10T13:28:34.407 回答