• 织梦内容管理系统 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

    哈哈。

  • 相关阅读:
    2015.07.20MapReducer源码解析(笔记)
    Hive(笔记)
    HDFS入门(1)
    Zookepper(2015.08.16笔记)
    USB_ModeSwitch 介绍(转)
    Perl 模块 Getopt::Std 和 Getopt::Long
    在linux下设置开机自动启动程序的方法
    gcc Makefile 入门
    Linuxexec函数族及system函数
    signal(SIGHUP, SIG_IGN)的含义
  • 原文地址:https://www.cnblogs.com/frey/p/2294555.html
Copyright © 2020-2023  润新知