互联网技术 · 2024年2月21日 0

使用PHP实现用户在线状态检测

这篇文章主要介绍了基于PHP实现用户在线状态检测,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这个是基于ThinkPHP框架的,其他的可以自己根据需求改

1.先新建一个tags.php文件,放在配置目录Conf下。

<?php
 /*
 * 添加行为
 *
 */
 return array(
  action_begin => array(OnlineCheck),
 );
 ?>

2.定义具体的功能

<?php
 /*
 * 定义行为: 在线更新
 */
 class OnlineCheckBehavior extends Behavior {
  //行为参数
  protected $options = array(
    ONLINE_CHECK => true, // 默认进行在线
    ONLINE_CHECK_TIME => 10, // 默认5分钟未活动,说明已下线
  );
  public function run(&$params) {
    if (C(ONLINE_CHECK)) {
      // 更新session
      if ((session(?login_account)) && (time() – session(access_time) > 60)) {
        session(access_time, time());
      }
      // 在线更新
      $ip = ip2long(get_client_ip());
      $online = M(Online);
      // 先删除在线表中 超过5分钟未活动的记录
      $map[lasttime] = array(lt, time() – C(ONLINE_CHECK_TIME) * 60);
      $icount = $online->where($map)->delete();
      if (session(?login_account)) { // 如果是登录用户
        $map = array();
        $map[uid] = session(login_uid);
        $map[lastip] = $ip;
        $id = $online->where($map)->getField(id);
        if (empty($id)) { // 不存在在线记录,则清空session
         session(null);
        } else {
         $map = array();
         $map[id] = array(eq, $id);
         $data[lasttime] = time();
         $data[lastip] = $ip;
  &