简单的PHP 在线人数统计
2025-05-02 22:47
PHP
83
0
0
0
标题录入
封面图
以下是一个简单的 PHP 在线人数统计代码示例。这个例子通过设置一个会话超时时间来跟踪当前在线的用户数量。 ### 代码实现 ```php <?php session_start(); // 设置会话超时时间为 5 分钟(300 秒) $timeout = 300; // 检查是否已经设置了在线用户的数组 if (!isset($_SESSION['online_users'])) { $_SESSION['online_users'] = []; } // 获取当前用户 ID(可以使用用户的唯一标识,比如用户名或 session_id()) $user_id = session_id(); // 如果用户已经在线,则更新其最后活动时间 if (in_array($user_id, $_SESSION['online_users'])) { $index = array_search($user_id, $_SESSION['online_users']); $_SESSION['online_users'][$index]['last_activity'] = time(); } else { // 如果用户不存在于在线列表中,则将其添加到列表中 $_SESSION['online_users'][] = [ 'id' => $user_id, 'last_activity' => time() ]; } // 清理超时的用户 foreach ($_SESSION['online_users'] as $key => $user) { if (time() - $user['last_activity'] > $timeout) { unset($_SESSION['online_users'][$key]); } } // 对在线用户数组重新索引 $_SESSION['online_users'] = array_values($_SESSION['online_users']); // 当前在线人数 $current_online_users = count($_SESSION['online_users']); // 显示当前在线人数 echo "当前在线人数: " . $current_online_users; ?> ``` ### 说明 1. **会话超时时间**:我们设置了 5 分钟(300 秒)的超时时间。如果用户在指定时间内没有活动,则认为该用户已离开。 2. **用户唯一标识**:这里使用了 `session_id()` 作为用户的唯一标识。你也可以根据需要修改为其他唯一标识符,例如用户的登录名或其他自定义字段。 3. **清理超时用户**:在每次请求时,都会检查每个用户的最后活动时间,如果超过设定的超时时间,则将其从在线用户列表中移除。 4. **显示在线人数**:通过 `count($_SESSION['online_users'])` 可以获取当前在线的用户数量。 ### 注意事项 - 这个代码假设所有用户都在同一个服务器上运行,并且会话数据存储在服务器端(如文件系统或数据库)。如果你使用的是分布式系统或负载均衡器,可能需要将会话数据集中存储(例如使用 Redis 或 Memcached)。 - 为了更好地管理会话,建议结合数据库或其他持久化存储来记录在线用户信息,而不是仅仅依赖内存中的 `$_SESSION`。 希望这个示例对你有帮助!如果有任何问题,请随时提问。
上一篇:
PHP开发技巧
下一篇:
php ubb
标题录入,一次不能超过6条
很多事情没有意义,为什么还要坚持去做?
T:0.006583s,M:246.2 KB
返回顶部
留言
留言
评论