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制作静态网站的模板框架(三)
Oct 09 PHP
PHP初学入门
Nov 19 PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
ThinkPHP写第一个模块应用
Feb 20 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
php二维数组排序详解
Nov 06 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
PHP中文编码小技巧
Dec 25 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
php tpl模板引擎定义与使用示例
Aug 09 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
php array_map()数组函数使用说明
2011/07/12 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
js 判断 enter 事件
2009/02/12 Javascript
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
Python中类型检查的详细介绍
2017/02/13 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
css3中transition属性详解
2014/09/02 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
求职简历自荐信范文
2013/10/21 职场文书
文秘专业毕业生就业推荐信
2013/11/08 职场文书
电钳专业个人求职信
2014/01/04 职场文书
公开服务承诺制度
2014/03/26 职场文书
讲解MySQL增删改操作
2022/05/06 MySQL