我有一个PHP代码,它从数据库中拉出文本,并在div中显示为链接。我每3000毫秒刷新一次DIV,刷新后CPU使用率只高出几个百分点。经过20-25分钟的持续刷新后,当我点击其中一个链接时,大约需要20秒才能打开该页面,同时浏览器选项卡冻结。更多的刷新发生-打开一个链接需要更多的时间,当打开更多的链接时(如果打开10-15个链接,打开下一个页面的速度会慢到10-12秒)。当浏览器尝试打开链接时,1个处理器线程已完全加载。代码如下(简化):
<div id="map1"></div>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<div id="map1">
<?PHP
if (isset($_GET['m'])) {
$selectback = "SELECT parentid FROM MAP_LINK WHERE sysid = " . $_GET['m'];
................
$rowb = ibase_fetch_row($query);
echo "<h6><a href=\"#\" id=\"back" . $rowb[0] . "\">BACK</a></h6><h4>
<script>
$('a#back" . $rowb[0] . "').click(function() {
clearInterval(auto_refresh);
$(\"#map1\").load(\"test2.php?m=" . $rowb[0] . "\");
auto_refresh = setInterval(function (){
$(\"#map1\").load(\"test2.php?m=" . $rowb[0] . "\");}, 3000);
});
</script>";
$select = "SELECT sysid FROM MAP_LINK WHERE parentid = " . $_GET['m'];
.........................................
$x = 0;
while ($x < $total_rows) {
$x++;
$row = ibase_fetch_row($query);
echo "<br><a href=\"#\" id=\"" . $row[0] . "\">Link # " . $row[0] . "</a>
<script>
$('a#" . $row[0] . "').click(function() {
clearInterval(auto_refresh);
$(\"#map1\").load(\"test2.php?m=" . $row[0] . "\");
auto_refresh = setInterval(function (){
$(\"#map1\").load(\"test2.php?m=" . $row[0] . "\");}, 3000);
});
</script>";
}
} else {
echo "<script>
$(document).ready(function(){
$(\"#map1\").load('test2.php?m=56');
auto_refresh = setInterval(function (){
$(\"#map1\").load(\"test2.php?m=56\");}, 3000);
});</script>";
}
?>这与我拥有的代码大致相同。数据库由4个从中拉取数据的表组成。前6-7次点击立即打开下一页,没有延迟,延迟在第10次点击后开始,并随着每一次额外的点击或刷新而变得更大。
我的问题是:我如何让它立即打开,或者至少更快?代码中存在错误。它可以工作,但它使用了大量的CPU,并且变得足够慢,以至于不能在页面上导航。
谢谢!
发布于 2016-06-30 22:00:58
虽然找不到帮助,但您可以尝试将setTimeouts链接在一起,如下所示:
function refreshments() {
setTimeout(function(){
//Do stuff
refreshments();
}, 1000);
}
refreshments();https://stackoverflow.com/questions/18773975
复制相似问题