Javascript如何处理计时器倒计时这样的长任务

Javascript如何处理计时器倒计时这样的长任务,javascript,php,ajax,Javascript,Php,Ajax,我有一个Javascript代码,它运行计时器倒计时,将每秒更新数据库中的计数器。我使用AJAX运行脚本,更新数据库,并从数据库中获取数据(计数器秒数),以将其回显到UI中。但是,一旦我刷新页面和/或转到我网站中的另一个页面,脚本就会停止并停止倒计时,它会影响我的数据库,因此mysql无法继续响应剩余的时间。我该怎么办 计时器 : : $(文档).ready(函数(){ setInterval(getTimer1,1000); }); var-ctr; var时间神经; 函数timerKo

我有一个Javascript代码,它运行计时器倒计时,将每秒更新数据库中的计数器。我使用AJAX运行脚本,更新数据库,并从数据库中获取数据(计数器秒数),以将其回显到UI中。但是,一旦我刷新页面和/或转到我网站中的另一个页面,脚本就会停止并停止倒计时,它会影响我的数据库,因此mysql无法继续响应剩余的时间。我该怎么办


计时器
:
:

$(文档).ready(函数(){ setInterval(getTimer1,1000); }); var-ctr; var时间神经; 函数timerKo(){ var minShow=parseInt(ctr/60)<10?“0”+parseInt(ctr/60):parseInt(ctr/60); var hourShow=parseInt(ctr/3600)<10?“0”+parseInt(ctr/3600):parseInt(ctr/3600); var secShow=ctr%60<10?“0”+(ctr%60):(ctr%60); //document.getElementById('time1')。innerHTML=hourShow+“:“+minShow+”:“+secShow; //document.getElementById(“counter1”).innerHTML=ctr; $.post('updateTimer.php', { “timer1\u更新”:true, “秒”:ctr },功能(数据、状态) { //警报(数据); }); ctr--; 如果(ctr==-1){ // ``````` 警报(“零Na”); clearInterval(timerInterval); } } 函数startNa(){ var sec=parseInt(document.getElementById(“时间秒”)值); var min=parseInt(document.getElementById(“time_min”).value); var hour=parseInt(document.getElementById(“time_hr”).value); 小时=小时*60*60; 最小=最小*60; 秒=秒; ctr=小时+分钟+秒; timerInterval=window.setInterval(timerKo,1000); } 函数getTimer1() { $.post('gettimetime.php', { “getTimer1”:true },功能(数据、状态){ $(“#time1”).html(数据); }); }
不要连续向数据库中插入值。在数据库中插入开始时间,无论何时,只要你想显示剩余时间,就使用插入的开始时间。你不能强迫人们停留在该页面上,使用客户端计时器不是一个好主意。“一旦我刷新页面和/或转到我网站中的另一个页面,如果你将倒计时存储在
javascript
(客户端)中,脚本就会停止。”一旦导航到新页面或刷新/重新加载,
javascript
也将丢失以前的值,并像第一次一样执行。如果您尝试在循环中更新数据库,您将向自己的网站发送垃圾邮件,并可能导致自我DDOS攻击。如上所述,存储开始时间,并在重新加载/导航时使用该时间和当前时间启动计数器。非常感谢。为了澄清,我可以使用javascript将开始时间插入数据库,并使用PHP在UI上倒计时?使用javascript传递开始时间,并使用PHP将其保存到数据库。显示计时器时,请使用Javascript。