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