zblogPHP如何获取随机文章
在Z-BlogPHP程序开发中,需要给站点添加一个获取随机文章功能,很多人会用下面这样的代码:
{php}$order = array('rand()'=>'');$where = array(array('=','log_Status','0'));$array = $zbp->GetArticleList(array('*'),$where,$order,array(10),'');{/php}{foreach $array as $related}<li><a href="{$related.Url}">{$related.Title}</a></li>{/foreach}
然而这并不是一个好的方法,因为如果你网站的文章数达到一定的数量之后,那么这段代码将直接让你的网站面临崩溃的风险!
因为它太占用服务器资源了!假如当你网站达到几十万文章的时候,再去随机取文章,会很容易崩溃,耗费服务区资源,同时网站也会容易打不开。这也是为什么ZBlog官方不建议大家使用随机文章模块的一个原因!
那么有什么好的办法呢?其实现在有了一个很好的解决方案,我们直接放弃使用上面的代码,而采用以下的代码来获取随机文章:
$count = 10; //随机文章数量$articles = $zbp->GetArticleList('*',null,array(mt_rand(0,1)?'log_ViewNums':'log_PostTime'=>mt_rand(0,1)?'DESC':'ASC'),100);//这里的100是获取的文章是数量,可根据你要获取的随机文章数量来决定这个值的大小shuffle($articles);$posts = count($articles) > $count ? array_chunk($articles,$count)[0] : $articles;foreach ($posts as $post){ echo $post->Title;}
这段代码的含义就是随机使用文章时间或者文章访问量排序,获取100篇文章,然后打乱再获取,这样就可以节省服务区资源了。