PHP实现统计在线人数功能示例


Posted in PHP onOctober 15, 2016

本文实例讲述了PHP实现统计在线人数的方法。分享给大家供大家参考,具体如下:

我记得ASP里面统计在线人数用application 这个对象就可以了。PHP怎么设计?

PHP对session对象的封装的很好,根据HTTP协议,每个范围网站的访客都可以生成一个唯一的标识符

echo session_id();
//6ed364143f076d136f404ed93c034201<br />

这个就是统计在线人数的关键所在,只有有这个session_id 也就可以区分访问的人了。因为每一个人都不同。
接下来,是怎么把session变量里面的值存到数据库里面去,这里有将介绍另一个函数

bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable$destroy , callable $gc )
//callable 可随时支取的,请求即付的,随时可偿还的
// open(string $savePath, string $sessionName) 打开连接
//close() 关闭连接
//read(string $sessionId) 对出数据
//write(string $sessionId, string $data) //写入数据
//destroy($sessionId) //删除数据
//gc($lifetime) //垃圾回收函数

注意,上面有几个函数是有参数传入的,你只要表明有传送传入就是的。PHP在执行代码的时候会自动读取

session中对于的参数

接下来就是完成上面五个函数和一个主函数就可以了

session_set_save_handler(
   array("session","open"),
   array("session","close"),
   array("session","read"),
   array("session","write"),
   array("session","destroy"),
   array("session","gc")
);

主函数就这样完成了,但为什么要用array(“session”,"方法")来调用这些方法,我真心搞不懂

(基本懂了:凡是将对象的方法作为参数传递都需要使用这种形式:array(对象, "方法名"))

接下来就是每个函数的编写

//链接数据的open
function open($path,$sessname) {
  $db = mysql_connect("localhost","root","123456","test");
  mysql_select_db("test",$db);
  mysql_query("SET NAMES UTF8");
  return true;
}

关闭数据可以链接的close

function close(){
$db = mysql_connect("localhost","root","123456","test");
mysql_close($db);
return true;
}

关键函数要开始了,显示读取函数read(),主要,read()函数是有值传进去的,传入的是session_id

function read($sid){
  $sql = "select data from session where sid='{$sid}' and card='".self::$card."'";
  $query = mysql_query($sql) or die(mysql_error());
  $row = mysql_fetch_array($query);
  $row>0?$row["data"]:" ";
}

第二个是写入函数,如果数据库里面存在的数据,只要更新时间就可以了,新数据写入

function write($sid,$data)
{
   $sql = "select sid from session where sid='{$sid}' and card='".self::$card."'";
   $query = mysql_query($sql) or die(mysql_error());
   $mtime = time();
   $num = mysql_num_rows($query);
   if($num){
    $sql = "UPDATE session SET data='{$data}', mtime ='{$mtime}'";
   }else{
    $sql = "INSERT INTO session (sid,data,mtime,ip,card) VALUES('{$sid}','{$data}','".time()."','{$_SERVER['REMOTE_ADDR']}','".self::$card."')";
   }
   mysql_query($sql);
   return true;
}

接下来就是体现PHP回收机制的函数了,两个函数都有参数传入。

function destroy($sid){
  $sql = "DELETE FROM session WHERE sid='{$sid}'";
  mysql_query($sql) or die(mysql_error());
  return true;
}
function gc($max_time){
  $max_time = 600;
  $sql = "DELETE FROM session WHERE `mtime`<'".(time()-$max_time)."'";
  mysql_query($sql) or die(mysql_error());
  return true;
}

好了,五个函数都完成了,再就是session表中间读出session的记录条数了。就能准确的统计出正在访问页面的人数。

10分钟没有操作的用户记录将被清空

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
文件上传的实现
Oct 09 PHP
php完全过滤HTML,JS,CSS等标签
Jan 16 PHP
解析php addslashes()与addclashes()函数的区别和比较
Jun 24 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
PHP5.3安装Zend Guard Loader图文教程
Sep 29 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
PHP常用的排序和查找算法
Aug 06 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
php并发加锁示例
Oct 17 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 #PHP
PHP实现导出excel数据的类库用法示例
Oct 15 #PHP
PHP数组操作简单案例分析
Oct 15 #PHP
PHP链表操作简单示例
Oct 15 #PHP
PHP在线打包下载功能示例
Oct 15 #PHP
PHP文件上传处理案例分析
Oct 15 #PHP
PHP小偷程序的设计与实现方法详解
Oct 15 #PHP
You might like
php 分页函数multi() discuz
2009/06/21 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
Python中的并发编程实例
2014/07/07 Python
python私有属性和方法实例分析
2015/01/15 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
Python的缺点和劣势分析
2019/11/19 Python
python的json包位置及用法总结
2020/06/21 Python
django使用graphql的实例
2020/09/02 Python
怎样自定义一个异常类
2016/09/27 面试题
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
经济信息管理专业大学生求职信
2013/09/27 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
导游的职业规划书范文
2013/12/27 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
毕业横幅标语
2014/10/08 职场文书
离职报告格式
2014/11/04 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
《搭石》教学反思
2016/02/18 职场文书