运行显示在网站上的计数器

Run a counter that is displayed on website

本文关键字:计数器 网站 显示 运行      更新时间:2023-09-26

我想在一个网站的后端运行一个计数器,这样它就会不断计数。我制作了一个javascript计数器(http://directinvent.com/counter/),它显示所需的结果,尽管每当为每个单独的用户加载站点时都会重置。

这个想法很简单。运行计数器后端,并在前端实时显示结果。对如何做到这一点有什么想法吗?

与Javascript中的Timer相同。当你开始你的柜台。然后在每次更新(请求)时重新计算结果。没必要每隔1/10秒算一次。如果没有人问,这是没有用的。

基本上,它看起来像这样:

long startTime = storeTimeFor(User);
return (currentTimeInSec - startTimeInSec) * incrementationPerSec

这样,您只需要为每个用户存储startTime(在数据库、文件或缓存中,如果您愿意的话)。在重置时,只需再次存储currentTime。

这就是你在很多语言中做计时器的方式,因为每秒钟增加一个值(使用sleep(1000))不会精确,因为你的线程不会一直运行,你不是一个人在机器上;)

<标题>编辑:

在客户端,我不会调用太多的服务器,只是要求值存储和从客户端用相同的逻辑做数学。如果需要的话,请查看如何在Javascript中创建计时器,这里只有计算值会改变。

计数器必须存储在后端(在文件或数据库中),可以是单个计数器,也可以是每个用户一个计数器。

呈现页面时,首先显示从后端读取的计数器。

如果计数器的速度是已知且恒定的(例如每秒增加3),那么你可以使用javascript (setTimeout)每秒增加它。后端将存储创建时的数字和时间(unix时间),例如120 at 08:00:00。如果用户在09:00:15访问网站,您知道这是3615秒后,所以您呈现初始页面,显示起始计数器为120 +(3615/3)= 1325。之后,javascript将以每秒3的速度递增并显示它。

如果计数器的速度是未知的,那么你需要定期(例如每10秒一次)通过ajax检查后端,请求计数器的当前值。您可以立即显示最新的值(这意味着计数器将每10秒更新一次)。,如果你想给人一种"活"的感觉,你可以在客户端用动画增量地显示它。例如:当前显示120。10秒后,通过ajax请求,您将获得一个新值150。差值是10秒内150-120 = 30。您可以显示每秒增加3的计数器(120、123、126、129、132、135、138、141、144、147、150)。您也可以使用随机增量来更加逼真,只要总增量在10秒内为30。

我通过使用Date()变量获取每天的时间,并将每天的时间乘以所需的增量常数来解决这个问题。这样,该方案将根据需要每天自动更新正确的号码,所有用户将在任何给定的时间显示正确的号码。

    function dotimer()
    {
    today=new Date()
    window.setInterval("dotimer()",speed)
    testMilli = today.getMilliseconds()
    testSeconds = today.getSeconds()
    testMinutes = today.getMinutes()
    testHours = today.getHours()
    totalCost = Math.round(testHours * 10800 + testMinutes * 180 + testSeconds * 3 + testMilli * 0.003);
    document.getElementById("counterSeconds").innerHTML = totalCost;
    }