惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
J
Java Code Geeks
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
U
Unit 42
B
Blog
宝玉的分享
宝玉的分享
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
博客园 - Franky
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
博客园 - 叶小钗

博客园 - 步青云

comfyui一次成功的抽卡 在 MySQL 5.7 中实现每月手动创建分区 tp5设置log文件输出 微信小程序连接websocket随记 命令提示符 在win64上使用bypy进行百度网盘文件上传 phpqrcode生成任意尺寸的二维码 Visual Studio 2017 安装心得 用火车头采集器8.6免费版采集图片 为了android sdk下载,必须修改hosts win2003服务器网站和数据库的二周自动备份 ultraedit去空行 用Navicat for MySQL进行数据库的导入导出 尝试jquery插件的开发 移动硬盘数据惊魂恢复记 用C#的控制台程序监控apache网站是否正常 FlashDevelop的第一个程序 RHEL6下编译Mplayer Linux下第一个C程序 用SciTE调试C++程序遇到的小问题
织梦内容管理系统 4_0_1 的rand()优化
步青云 · 2011-12-20 · via 博客园 - 步青云

最近,某客户网站生成静态文件超慢。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

哈哈。

posted on 2011-12-20 12:47  步青云  阅读(337)  评论()    收藏  举报