示例代码
// 用户ID $id = 1; // 在线失效时间,即10分钟后用户没有任何操作,表示不在线了 $time = 10*60; // 保存用户在线记录,以分钟为单位 $bitmap = 'online_'.date("Hi"); $redis->setBit($bitmap,$id,1); // 设置失效时间 $redis->setTimeout($bitmap,$time); $bitop_param[] = 'or'; $bitop_param[] = 'online'; // 统计2分钟内在线人数,也可是设置为4,5分钟等 for($i = 0;$i < 2;$i++){ $bitop_param[] = 'online_'.date('Hi',time()-60*$i); } // 利用bitOp将多个在线记录的bitmap合并成一个,并保存到临时的bitmap中 call_user_func_array([$redis, "bitOp"], $bitop_param); // 统计总的用户在线记录 $online = $redis->bitCount($bitop_param[1]); // 删除临时统计的bitmap $redis->delete($bitop_param[1]);
Leave a Reply