php在线运行 是如何实现的6,discuz在线人数的实现原理(Discuz6.1.0)

1、首页上的“在线会员”,显示的是简略版

2、点击首页上的“在线会员”,去到“在线用户”的详细页,http://yourdomain.com/member.php?action=online

实现原理:依赖于一个session表,{$tablepre}sessions。

用户进入论坛(index.php:197行)或者版块首页(forumdisplay.php:207行)会触发一个 updatesession()函数(在include/global.func.php里面定义),还有其他地方也有触发这个函数。这个函数会往 {$tablepre}sessions表里面插入一条新记录(已有记录则更新这条记录),插入的内容包括当“前动作”的代号、当前论坛ID,当前主题 ID。

首页取在线会员数首页是取$_DCOOKIE['onlineusernum'] 值($_DCOOKIE其实就是$_COOKIE),没有的话再从sessions表里面count(*)一下,还有一些处理总在线人数、游客人数、隐身 人数的逻辑处理,具体的可以看一下index.php 173-240之间的代码;在线用户页(member.php 23行-50行之间),也是也从sessions表里面count(*)一下总在线人数,然后再根据sessions表里面的fid(论坛ID)和 tid(主题ID)左连接forums、threads表取得论坛名称、帖子标题,至于“当前动作”,sessions里面保存的是一个代号,相对应的文 字在templates/default/action.lang.php文件里面“当前动作”是一个全局变量$discuz_action ,在不同页面有不同的值,如在:

index.php     $discuz_action = 1;(浏览论坛首页)

logging.php    $discuz_action = 6;(登录论坛)

viewthread.php  $discuz_action = 3;(浏览帖子)

以上代码是针对DZ6.1版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值