【问题标题】:Live countdown clock with django and sql?使用 django 和 sql 实时倒计时?
【发布时间】:2011-07-10 04:52:28
【问题描述】:
如果我制作一个像 ebay 这样的实时倒计时时钟,我该如何使用 django 和 sql 来做到这一点?我假设每秒在 django 或 sql 中运行一个函数来检查时间会非常低效。
这甚至是一个合理的策略吗?
还是他们这样做的方式:
当页面加载时,它会从服务器获取结束日期时间并在用户机器上运行一个 javascript 倒计时时钟?
如果是这样,你如何用javascript做倒计时?一旦时间限制结束而没有用户页面加载,我将如何删除/移动数据?或者用户是否绝对有必要加载页面以检查时间限制以创建高效的倒计时?
【问题讨论】:
标签:
javascript
python
django
time
countdown
【解决方案1】:
我认为这个问题实际上与 SQL 没有任何关系——除了您可能会从 SQL 检索到期时间。你真正关心的只是如何在浏览器中实时显示超时时间,对吧?
显然,最简单的方法是在初始加载时或作为 AJAX 请求的一部分向页面发送“剩余秒数”计数器,然后使用 Javascript 显示计时器,并使用当前值。我会选择使用“剩余秒数”计数器而不是“结束日期时间”,因为您不能相信浏览器的时钟设置正确 - 但您可能可以相信它可以正确倒数秒数。
如果您不相信 Javascript 或客户端的时钟是准确的,您可以通过 AJAX 定期将当前“剩余秒数”值重新发送到浏览器。我不会每秒钟都这样做,最多每 15 或 60 秒一次。
至于时钟到期时删除/移动数据,您需要在 Javascript 中完成所有这些操作。
我不能 100% 确定我回答了你所有的问题,但无论如何你的问题似乎有点分散。如果您需要更多关于操作理论的说明,请询问。
【解决方案2】:
前段时间我也遇到过同样的问题。
首先,您的问题与 django 和 sql 无关。这是一个笼统的概念,由于服务器开销,实现起来并不容易。
我想到的一个解决方案是在数据库中保留进程的开始时间。
当有人要求您查看剩余时间时,从数据库中读取它,减去当前时间和服务器该时间,然后在您的浏览器中使用该值初始化您的 javascript 函数并倒计时 15 秒。之后使用 AJAX 执行相同的操作,无需等待用户的请求。
但是,根据您的应用程序,可能会有其他实现。如果您详细解释您的应用程序,可能还有其他解决方案。
例如,如果您实施一个时间有限的调查问卷,那么对于每个提交的答案,您都应该传递该秒计算的 javascript 值。