首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript setInterval之后的高CPU使用率

JavaScript setInterval之后的高CPU使用率
EN

Stack Overflow用户
提问于 2013-09-13 04:43:31
回答 1查看 1.7K关注 0票数 0

我有一个PHP代码,它从数据库中拉出文本,并在div中显示为链接。我每3000毫秒刷新一次DIV,刷新后CPU使用率只高出几个百分点。经过20-25分钟的持续刷新后,当我点击其中一个链接时,大约需要20秒才能打开该页面,同时浏览器选项卡冻结。更多的刷新发生-打开一个链接需要更多的时间,当打开更多的链接时(如果打开10-15个链接,打开下一个页面的速度会慢到10-12秒)。当浏览器尝试打开链接时,1个处理器线程已完全加载。代码如下(简化):

代码语言:javascript
运行
复制
    <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,并且变得足够慢,以至于不能在页面上导航。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-06-30 22:00:58

虽然找不到帮助,但您可以尝试将setTimeouts链接在一起,如下所示:

代码语言:javascript
运行
复制
function refreshments() {
    setTimeout(function(){
        //Do stuff
        refreshments();
    }, 1000);
}

refreshments();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18773975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档