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 相关文章推荐
php和js交互一例-PHP教程,PHP应用
Jan 03 PHP
php 购物车实例(申精)
May 11 PHP
基于OpenCV的PHP图像人脸识别技术
Oct 11 PHP
PHP中include()与require()的区别说明
Mar 10 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
php操作memcache缓存方法分享
Jun 03 PHP
PHP生成条形码大揭秘
Sep 24 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 PHP
PHP实现登录验证码校验功能
May 17 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
提高Laravel应用性能方法详解
Jun 24 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
在Python的循环体中使用else语句的方法
2015/03/30 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
应届生煤化工求职信
2013/10/21 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
优秀家长事迹材料
2014/05/17 职场文书
档案工作汇报材料
2014/08/21 职场文书
物流管理专业推荐信
2014/09/06 职场文书
群众路线个人整改措施
2014/10/24 职场文书
美术教师个人总结
2015/02/06 职场文书
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android
MySQL新手入门进阶语句汇总
2022/09/23 MySQL