zoukankan      html  css  js  c++  java
  • 织梦内容管理系统 4_0_1 的rand()优化

    最近,某客户网站生成静态文件超慢。2.7万用了一天也没生成完。很是郁闷。

    查阅模板文件,发现蹊跷:

    <DL>
    <DT>相关文章</DT>
    <DD>
    <ul>
    {dede:arclist titlelen='42' row='5' orderby=rand}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:arclist}
    </ul>
    </DD>
    </DL>

    该模板文件用了dede标签的rand随机。
    只能从修改该标签着手了。

    解决方案:

    采用新的标签代码:

    {dede:field name='id' function='GetRand(42,5)'/}

    在 include\inc_functions.php 增加一个新函数:

    function GetRand($t,$s)
    {
    $dsql = new DedeSql(false);
    $row = $dsql->GetOne("select id From #@__archives order by id desc limit 0,1");
    $r = $row['id'];
    $q=mt_rand(1, $r);
    for($i=1;$i<$s;$i++)
    {
    $q =$q.",". mt_rand(1, $r);
    }
    $query = "Select ID,title,typeid,ismake,senddate,arcrank,money From #@__archives where ID in (".$q.") ";
    $dsql->SetQuery($query);
    $dsql->Execute();
    $q = "";
    while($row = $dsql->GetObject()){
    $naid = $row->ID;
    $ntitle = $row->title;
    $typeid = $row->typeid;
    $nRow = $dsql->GetOne("select ID,typedir,typename,namerule,namerule2,ispart,moresite,siteurl From #@__arctype WHERE ID=".$typeid);
    $nlink = GetFileUrl($naid,$typeid,$row->senddate,$row->title,$row->ismake,$row->arcrank,$nRow['namerule'],$nRow['typedir'],$row->money,true,$nRow['siteurl']);
    $q .= '<li><a href="'.$nlink.'" target="_blank" class="tag_title_link">'.cn_substr($ntitle,$t).'</a></li>';
    }
    $dsql->Close();
    return $q;
    }

    经过实测,生成速度那叫一个快。

    请注意dede版本,适用于 dedecms 4.0.1

    哈哈。

  • 相关阅读:
    开发avr单片机网络资源
    c语言中各种数据类型的长度
    REPEAT_BYTE(x)宏
    如何快速掌握man手册的使用
    如何获取内核代码的变更信息说明
    min宏的学习
    Spring对jdbc支持
    切入点表达式
    XML方式实现AOP编程
    注解方式实现AOP编程
  • 原文地址:https://www.cnblogs.com/frey/p/2294555.html
Copyright © 2011-2022 走看看