-1

我正在使用 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 人。

欢迎任何意见/建议,谢谢!

4

1 回答 1

1

我认为这正是你的问题。由于请求是异步的,因此您无法控制它们的执行顺序。您必须同步您的请求并避免多个请求,即,如果没有待处理的请求,您只能执行新请求,否则您无法控制每个请求的回调何时触发。

于 2012-05-14T15:23:05.843 回答