AJAX会占用我的CPU能力吗?

时间:2013-05-02 03:22:09

标签: php javascript ajax

访问该页面时我的服务器CPU功率使用11%/ 100%每个打开的选项卡是另外11%。这是我的JScript的代码:

function ajaxFunction(){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            var ajaxDisplay = document.getElementById('pop');
            ajaxDisplay.innerHTML = "Population: " + ajaxRequest.responseText;
        }
    }
    ajaxRequest.open("GET", "count.php", true);
    ajaxRequest.send();
}

这是PHP代码:

<?php
$con = @mysql_connect("31.xx.x.xxx","xxxxxxxx","xxxxxxxxxxxx");
if (!$con)
  {
  echo('?');
  }
@mysql_select_db("archstud_db", $con);
$result=mysql_query("SELECT * FROM chars");
$num=mysql_num_rows($result);
$num = $num;
echo $num;

@mysql_close($con);
?>

我也在使用带有window.onload的JScript的setInterval()启动setinterval函数,每隔6秒刷新一次JScript。

什么占用了这么多CPU? 另外,我该如何解决?

3 个答案:

答案 0 :(得分:1)

OP没有粘贴代码的重要部分,并且要求查看它是不成功的,所以我会冒险猜测并用合理的解释进行备份。他的服务器的CPU正在被超载 - 这意味着无论发生什么,都会有很多事情在服务器上乱码。我们也知道每个标签在本地增加了11%,这意味着某些东西在浏览器中做了大量的事情。

OP说明了setInterval。我准备打赌他有以下几行:

setInterval(ajaxFunction, 6);

他可能相信,每6秒就会ping一次。事实上,它每六个毫秒 ping一次,这将解释服务器端和客户端加载而不冻结页面。

快速解决方法如下:

setInterval(ajaxFunction, 6000);

答案 1 :(得分:-1)

我不相信这是一个Ajax问题,因为Ajax发生在客户端,正如你所说,这是你的服务器CPU过载。首先,检查MySQL运行此查询的时间。你说你的Javascript代码以6秒的间隔运行,每个连接到MySQL加上PHP脚本执行会消耗一点CPU,因为它为每个执行的请求创建一个新线程,所以如果你在前一个请求之前打开一个第二个选项卡完成后,第二个连接CPU使用率将被添加到第一个。

答案 2 :(得分:-2)

为什么还在使用已弃用的库(mysql)?

你听说过索引 - “SELECT * FROM chars”可能搞砸了。

为什么你每6秒刷新一次?