Javascript 每5秒查询一次MySQL数据库的Ajax post-to-PHP脚本性能/问题?

Javascript 每5秒查询一次MySQL数据库的Ajax post-to-PHP脚本性能/问题?,javascript,jquery,mysql,ajax,Javascript,Jquery,Mysql,Ajax,我有一个jqueryajax函数,它可以发布到一个PHP脚本,然后该脚本从数据库中检索一些字段并将它们返回给客户端。单击按钮后,ajax功能每5秒运行一次: window.setInterval(function() { ajaxCall("lobby"); }, 5000); ajax功能: function ajaxCall(param) { $.ajax({ url: "script/lobby.php",

我有一个jqueryajax函数,它可以发布到一个PHP脚本,然后该脚本从数据库中检索一些字段并将它们返回给客户端。单击按钮后,ajax功能每5秒运行一次:

window.setInterval(function()
    {
        ajaxCall("lobby");
    }, 5000);
ajax功能:

function ajaxCall(param) 
    {
        $.ajax({
            url: "script/lobby.php",
            type: "post",
            dataType: "json",
            data: param,
            success: function(data, textStatus, jqXHR){
                //do stuff with data
            },
            error:function(jqXHR, textStatus, errorThrown){
                //show error
            }
        });
    }

这是一个好的方法吗?我在某个地方读到,如果做得不对,可能会造成电话积压。如何防止这种情况发生,或者是否有更好的方法代替每5秒为每个用户查询一次数据库?

在前一次调用完成之前,不要创建间隔,而不要启动对服务器的下一次调用:

function ajaxCall(param) 
{
    $.ajax({
        url: "script/lobby.php",
        type: "post",
        dataType: "json",
        data: param,
        success: function(data, textStatus, jqXHR){
            setTimeout(function () {/*Use setTimeout instead of setInterval*/
                 ajaxCall();/*This will keep getting called until an error is hit*/
            }, 5000); 
            //do stuff with data
        },
        error:function(jqXHR, textStatus, errorThrown){
            //show error
        }
    });
}

ajaxCall(); /*This starts things off*/

你可以用一个滑动的计时比例进行实验。我肯定它有一个名字,但最初每次检查1秒开始,然后在这么多“空更新”之后,即没有变化,在检查之间延长到5秒,然后是15秒,等等

当收到指示活动的数据响应时,可以将检查重置为5秒