【发布时间】:2012-08-07 19:22:16
【问题描述】:
我有一个存储在 MySQL 数据库中的时间戳,我想定期(比如每秒)更新当前时间与存储在数据库中的时间戳值之间的差异(当然无需重新加载页面)以显示某些内容就像一个 5 分钟的倒数计时器。现在。我正在考虑使用 setTimeout 定期触发获取此值的 AJAX 请求。这是最好的方法吗?相反,我应该只运行一个客户端计时器,然后每分钟左右将其与服务器端时间戳同步一次吗?
注意:此计时器负责我网站上的一项重要功能,因此它应该相当准确。
编辑:我不需要 cron 作业,我只需要一个倒计时计时器,它会在网页上更新,例如从 5:00 到 4:59 到 4:58...等等,自动地。如果您熟悉 Megaupload 关闭前的那个,我需要类似的东西。
【问题讨论】:
-
every second= 坏主意。大量的网络流量,大量的数据库流量,只是为了跟踪时间?计算机已经有了一个叫做“时钟”的东西——我听说它们很受欢迎;-) -
我该怎么做?会是来自客户端计算机的时钟吗?我需要确保这个计时器是准确的,不会被客户端篡改。
-
这里的用例是什么?您是要禁用某些功能或阻止用户在一段时间后提交表单,还是要执行其他操作?
-
基本上我需要一个表单在用户单击提交按钮后恰好 5 分钟提交。我需要用户查看表单提交前还剩多少时间。理想情况下,它应该每秒更新一次,所以它看起来像一个真正的计时器,有点像 Megaupload 之前的计时器。
-
好吧,因为 Javascript 工作方式的本质,
exactly几乎是不可能实现的(有关详细信息,请参阅this)。但是,您可以做一些非常接近它的事情,我建议您要做的是在客户端(用户可篡改但资源消耗最少)做这一切,更重要的是使用服务器端验证来防止用户能够篡改它。因此,您在开始时在数据库中设置了一个值,上面写着“在 x 时间之前不接受提交”,然后客户端可以处理计时器
标签: php javascript mysql ajax timer