现在的位置: 首页 > 综合 > 正文

php利用缓存制作的bellbot

2017年12月26日 ⁄ 综合 ⁄ 共 2825字 ⁄ 字号 评论关闭

1、当用户登录bellbot网站时,会生成一段代码:

<script type="text/javascript" src="http://zt.xoyo.com/cqzn/bell/?act=setmemcache&id=3">

这段代码的作用是向后台服务器的缓存中写人数据,其中包括用户访问的总量代码如下

$id = $_GET['id'];
empty($id)&&exit('fail');
$info = getpassport($id);
$keyarr = setkey($info['passport']);
if(empty($keyarr['total']['number'])){
   $Ttserver->set($keyarr['total']['key'],1);
}else{
   $Ttserver->increment($keyarr['total']['key']);
}
if(empty($keyarr['normal']['number'])){
    $result=$Ttserver->set($keyarr['normal']['key'],1);
}else{
    $result=$Ttserver->increment($keyarr['normal']['key']);
 }

//******用户登录时获取用户的id

function getpassport($id){
    global $db;
    $sql = "select * from test where id='{$id}'";
    $info = $db->getRow($sql);
    return $info;
}
//*******用户访问时缓存key值的设定
 function setkey($passport){
        global $db,$config,$Ttserver;
        $key = 'bell_'.$passport;
        $totalkey = 'bell_total_'.$passport;
        $number = $Ttserver->get($key);
        $totalnumber = $Ttserver->get($totalkey);
        $keyarr = array('normal' => array('key' => $key,'number' => $number), 'total' => array('key' => $totalkey,'number' => $totalnumber));
        return $keyarr;
 }
//*******获取用户的id
 function getid($passport,$password){
      global $db;
      $password=md5($password);
      $sql = "select * from test where passport = '{$passport}' and pwd='{$password}'";
      $userinfo = $db->getRow($sql);
      if(empty($userinfo)){
            $result = user($passport);
            if($result){
                $data = array('passport' => $passport ,'pwd' => $password);
                $db->insert('test', $data);
                $id = $db->lastId();
            }else{
                 $id="false";
            }
      }else{
            $id = $userinfo['id'];
      }
      return $id;
 }

2、当我们成功登录后不断的请求后台服务器,来判断缓存中数据的变化。


$id = $_SESSION['id'];
empty($id)&&exit('fail');
$info = getpassport($id);
$keyarr = setkey($info['passport']);

if($keyarr['normal']['number']>=5){
    echo "5:ding:".$keyarr['total']['number'];
    $Ttserver->decrement($keyarr['normal']['key'],5);
}else{
    if(empty($keyarr['normal']['number'])){ echo "no:ding:".$keyarr['total']['number'];exit;}
    echo $keyarr['normal']['number'].":ding:".$keyarr['total']['number'];
    $Ttserver->delete($keyarr['normal']['key']);
}

3、根据后台返回的数据,在前台用js控制发出声音即可(我只用的flash实现的)。

<embed id="song" height="80" width="150" pluginspage="http://www.macromedia.com/go/getflashplayer" 
type="application/x-shockwave-flash" wmode="transparent" src=""></embed>

我们只需要给这个标签加上src的地址即可

<script>
var interval;
    $(document).ready(function(){
      interval = setInterval("getding()", 2000);
  })
    function getding(){
       $.ajax({type:"GET",url:"http://zt.xoyo.com/cqzn/bell/index.php?act=memcache",success:function(msg){
            var arr=msg.split(':');
            if(arr[0]=='no'){
               alert('end');
            }else{
                for(var i=0;i<arr[0];i++){ 
                    var timeout = i*1000;
                    setTimeout("addSong()",timeout);
                }
            }
            $('#rnum').html(arr[2]); 
     }})  
    }
 
 function addSong(){
    var song = document.getElementsByTagName("embed");
    if(true){
    song[0].src='http://zt.xoyo.com/cqzn/bell/style/js/test.swf';
    }
}

初学者,忘大家多提出意见!

抱歉!评论已关闭.