Php 如何跟踪计数计时器并存储时间供以后使用

Php 如何跟踪计数计时器并存储时间供以后使用,php,jquery,ajax,Php,Jquery,Ajax,我试图找出是否有比我的方法更好的方法来跟踪和存储计时器的结果,可以是每秒一次,也可以是每X秒一次,这样当用户再次返回页面并选择停止的位置时,这些数据可以再次使用 我的方法是运行循环setTimeout(),它使用AJAX运行查询。我将它设置为每5秒执行一次,它可以正常工作,但我担心未来的性能,数百名用户几乎每5秒同时生成一个查询,我也不喜欢看到控制台记录所有这些POST事件,因为我不知道用户将如何解释它 总之,我的代码是这样的 //This setTimeout() is not the loo

我试图找出是否有比我的方法更好的方法来跟踪和存储计时器的结果,可以是每秒一次,也可以是每X秒一次,这样当用户再次返回页面并选择停止的位置时,这些数据可以再次使用


我的方法是运行循环setTimeout(),它使用AJAX运行查询。我将它设置为每5秒执行一次,它可以正常工作,但我担心未来的性能,数百名用户几乎每5秒同时生成一个查询,我也不喜欢看到控制台记录所有这些POST事件,因为我不知道用户将如何解释它

总之,我的代码是这样的

//This setTimeout() is not the loop. This only generates a 5 seconds delay between a previous action and the recurring update and it only performs the delay once. This is for a personal need.

setTimeout(function(){
    duration = getSeconds(); //this gets the current seconds listed on the timer
    console.log(duration);
    runUpdateProgress(c_id, id, 0, duration, 0, 1); //this passes the parameters to the function that does the update in the database
}, 5000);


//Here's the function that runs the setTimeout() loop and performs the update ever x seconds.

function runUpdateProgress(c_id, id, progress, duration, status, action){
    var func = setTimeout(function start() {
        //console.log({c_id, id, progress, duration, status, action});
        if(action == 1){
            duration = getStopWatchSeconds();
            updateSaveLessonProgress(c_id, id, progress, duration, status, action);
            setTimeout(start, 5000);
        }else{
            clearTimeout(func);
        }
    }, 5000);       
}
代码可以工作,它更新数据库并保存时间,我可以随时获取上次存储的时间(可能会损失5-8秒,但也可以)


我只是想知道,当有大量用户触发此查询时,是否有更好的方法在不影响数据库的情况下执行此操作。我还不确定这是否真的会影响实时环境中的性能,但欢迎有更好的想法。

“我也不喜欢看到控制台与所有这些POST事件一起归档,因为我不知道用户会如何解释它。”…99.99%的用户永远不会打开控制台,所以我不担心这一点。即使他们看到了,他们也不知道他们所看到的是不是一个问题。这是一个开发工具。普通用户对它不感兴趣,而且大部分用户甚至不知道它就在那里。不过,关注性能是对的。当多个用户同时执行is时,过于频繁的ajax轮询会使服务器瘫痪,特别是当服务器环境无法动态扩展时。这个计时器的使用案例是什么?为什么需要如此频繁地向服务器提供数据?您是否可以将其放在本地存储中(以防用户关闭页面,然后重新打开页面),然后不太频繁地发送到服务器?或者你最好使用WebSocket。这完全取决于数据的用途和重要性。@ADyson感谢您的输入。我曾想过采用cookie方式,但我担心cookie过期时间和在与数据库同步之前丢失数据。我不认为localStorage是一个解决方案,在研究它之后,它实际上是我的一个好选择。我将每x秒将详细信息存储在localStorage中,然后每60到120秒甚至更晚运行一次查询。用户清除本地存储的风险仍然存在,但发生这种情况的可能性不如cookie过期。