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 模拟get_headers函数的代码示例
Apr 27 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
PHP缓冲区用法总结
Feb 14 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
Laravel日志用法详解
Oct 09 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
php生成微信红包数组的方法
Sep 05 PHP
Laravel基础_关于view共享数据的示例讲解
Oct 14 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 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函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
javascript 禁止复制网页
2009/06/11 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
python 切片和range()用法说明
2013/03/24 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python表示矩阵的方法分析
2017/05/26 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
Python中super函数用法实例分析
2019/03/18 Python
python中threading开启关闭线程操作
2020/05/02 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
艺术专业大学生自我评价
2013/09/22 职场文书
公司年会演讲稿范文
2014/01/11 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
4种方法python批量修改替换列表中元素
2022/04/07 Python
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL