马上注册,免费下载更多dz插件网资源。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
看不少人喜欢用ORDER BY RAND()随机调用,随机调用是最耗资源的一种调用方式,信息数在1万以上随机调用就开始影响速度。比like模糊匹配更占用资源!!!使用时建议慎之又慎。如果你能惹受乌龟爬的速度就当没说了!
如果确实要使用,可以参照帝国开发者王猛同志的逻辑思路:先用php随机出信息ID,然后SQL调用用id in (php随机的ID列表) 这样索引就能起到作用了!
那我们以文章表举例一下,调用举例:- <?php $bid=$empire->fetch1("select id from {$dbtbpre}ecms_article order by id desc"); $randnum=10;$randids=''; $randdh=''; $minId=1; $maxId=$bid['id']; $idRange=range($minId,$maxId);shuffle($idRange);foreach($idRange as $randomId){ $randids.=$randdh.$randomId; $randdh=','; $randnum--; if($randnum<=0){ break; } } ?>[e:loop={'article',10,18,0,"id in ($randids)"}] <a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> <br> [/e:loop]
复制代码 如果由于数据删除那就会存在ID不连续的情况,这样就会导致随机的id可能不存在,调用少了!那就只能加大马力给服务器增加压力查询验证下随机出来的ID是否存在咯!代码如下:
https://www.meiweny.cn/zazhi/zhongwangjiaocheng/179.html
上面两种代码经过在本站文章数据表拥有将近12万篇文章的情况下!不管是静态生成还是动态浏览速度就大大的提高了!毕竟有充分利用到索引id字段。当然也还有一种方法!敬请脑补!循环出来的ID转为数组在与文章表的数组进行去重后再合并数组在转为字符获得有用的随机ID!
不管哪种方法!帝国模板是支持PHP的,都可以借用memcached或者redis这样的内存把缓存时间设置长点!比如缓存一天的时间更能大大提高生成速度与动态速度!
总之:尽量不要用随机调用!这个确实是很浪费服务器资源!数据多会造成服务器资源耗尽!
©DZ插件网所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 网站部分内容来源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。 您在本站任何的赞助购买、下载、查阅、回复等行为等均表示接受并同意签订《DZ插件网免责声明协议》。 如有侵权请邮件与我们联系处理: discuzaddons@vip.qq.com 并出示相关证明以便删除。敬请谅解!
|
|