今天用thinkphp开发网站时,做一个首页的轮播要求即时更新
做法就是每次有新的回复时 保存回复的id和文章的id 保存到缓存里。同时判断数组的长度。保持count = 4
<?php
/**
* 加入一个最新回答的缓存
* @param int $tmp_id
* @param int $rep_id
* @return boolean
*/
public function pushRepCache($tmp_id,$rep_id){
$key = C('xa_first_key');
if(!is_numeric($tmp_id) || !is_numeric($rep_id)){
return false;
}
$value = S($key); //key=>value
$data = array("ask_id" => $tmp_id,"rep_id"=>$rep_id); //组成数据
if(!isset($value) || empty($value)){ //第一次是空的 加入
$value = array();
$value[0] = $data;
S($key,$value);
}else{ //缓存有值 先进先出 len>4
if(count($value) >=4){
array_pop($value);
}
array_unshift($value, $data); //添加
S($key,$value); //保存
}
return true;
}
?>
网站没有配置redis。如果有redis 就可以用redis完善的控制列队。
最后那个 S($key,$value) 我一开始忘记写了。在调试的时候数组的长度始终保持两个长度,结果花了我1个多小时的查找原因 - -!。

浙公网安备 33010602011771号