访问该页面时我的服务器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? 另外,我该如何解决?
答案 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秒刷新一次?