我正在使用 jQuery、AJAX、PHP 和 mySQL 开发类似于拍卖的功能。
Ajax 每秒访问服务器以获取最新的出价,在此调用期间,我们还从服务器获取剩余时间以使所有参与者保持同步。
我有两个问题:
1) 有时剩余时间会在几分之一秒内闪烁回上一次的值。这可能与异步结果不同步有关吗?
相关代码片段:
function dotimer() {
updateScreen();
setTimeout('dotimer()',1000);
}
function updateScreen(){
$.ajax({
type : 'POST',
url : 'getinfo.php',
dataType : 'json',
data: { /* various params are passed to php */ },
success : function(data){
/* other info processed here...*/
$("#countdowntimer").html(data.secondsremaining);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {}
});
}
获取信息.php:
$return['secondsremaining'] = strtotime($end_time)-strtotime("now");
/* get other infor from database... */
echo json_encode($return);
(setTimeout 和 setInterval 都有相同的结果。)
2)每秒访问数据库是否过多?我看不到确保信息是最新的替代方法。有一个更好的方法吗?拍卖时间相对较短(30 分钟),我们预计参加者不会超过 10 人。
欢迎任何意见/建议,谢谢!