利用cookie应该可以实现php指定时间随机一次
0
1468
2017年9月30日
在取出数据之后把数据缓存在客户端,然后cookie指定一个时间周期,在下次刷新时先判断这个cookie时间到期没,如果到期了就重新刷新,否则就调用本地缓存。以下是以emlog博客为案例的代码
<?php //载入全局加载项 require_once 'init.php'; //链接数据库 $DB = MySql::getInstance(); /*****************根据条件随机获取20条文章的GID***************/ $sql = "SELECT * FROM ".DB_PREFIX."blog ORDER BY rand() DESC LIMIT 20"; $list = $DB->query($sql); while($row = $DB->fetch_array($list)){ $arrgid.= $row['gid'].','; } $arrgid = substr($arrgid,0,strlen($arrgid)-1);//去除最后一个逗号 $arr = explode(",",$arrgid);//将获取的gid以逗号分割为数组 /***********函数,根据文章gid输出文章标题与连接**************/ function sylist($gid){ $DB = MySql::getInstance(); $sql = "SELECT * FROM ".DB_PREFIX."blog WHERE gid = '{$gid}'"; $list = $DB->query($sql); while($row = $DB->fetch_array($list)){ return '<li><a target="_blank" href="'.Url::log($row['gid']).'">'.$row['title'].'</li>'; } } /***********根据cookie在指定时间内获取内容**************/ //判断cookie【gid】是否存在 if (isset($_COOKIE["gid"])){ //判断cookie【date】过期时间是否存在 if(isset($_COOKIE["date"])){ echo '过期时间为:'.date("Y-m-d H:i:s", $_COOKIE["date"]).'<br/><br/>'; //判断时间是否过期,当前时间大于cookie【date】中储存的时间则为过期 if(time() > $_COOKIE["date"]){ //如果过期了,重新创建过期时间 setcookie("date", "", time()-3600);//删除过期时间 setcookie("date", time()+60*1,time()+3600);//重新创建过期时间,其中的60*1为一分钟 //刷新内容 setcookie("gid", "", time()-3600);//删除过期内容 setcookie("gid", $arrgid,time()+3600);//重新创建内容 } //输出内容 $arr = explode(",",$_COOKIE["gid"]); //循环输出数组 foreach($arr as $value){ echo sylist($value); } }else{ //如果不存在,则创建一个距离当前时间一分钟的时间为过期时间 setcookie("date", time()+60*1,time()+3600);//其中的60*1为一分钟 //如果date不存在时则会输出空白,此时随机输出内容 foreach($arr as $value){ echo sylist($value); } } }else{ setcookie("date", time()+60*1,time()+3600);//其中的60*1为一分钟 setcookie("gid", $arrgid,time()+3600);//如果gid不存在,则创建gidcookie,内容为随机获取的文章gid //如果gid不存在时则会输出空白,此时随机输出内容 foreach($arr as $value){ echo sylist($value); } } ?>
本文代码由emlog学院陈子文提供,虫子仅作保存分享之用!代码演示请转到daohang.shuyong.net查看
这个主题简介啊