在PHP中访问活动会话

时间:2010-08-06 18:58:44

标签: php session

如何获取服务器上所有活动PHP会话的列表并从一个用户的实例中访问它们?

激励案例是显示网站上所有当前活跃用户的列表,其中用户名存储在每个用户的PHP会话中。

注意:我知道我可以通过数据库(甚至是文件系统)创建自己的状态,但我正在寻找一种利用内置PHP会话机制的方法。

4 个答案:

答案 0 :(得分:8)

看到回复,虽然有可能,但这并不意味着你应该做到这一点。存储会话的格式未记录在案,并且可能随时更改(即使在次要版本之间)。

正确的方法是实现自己的session handler。真的不是那么难。

答案 1 :(得分:7)

会话列表

<?php
print_r(scandir(session_save_path()));
?>

检查特定会话

<?php
session_start();
echo (file_exists(session_save_path().'/sess_'.session_id()) ? 1 : 0);
?>

时间会话文件上次更改

<?php
session_start();
echo filectime(session_save_path().'/sess_'.session_id());
?>

就像已经完成的死亡一样,以这种方式处理会话并不是最好的做法,但是如果需要,这些将无需检查/修改会话存储路径即可工作(如果切换到另一个路径,则非常有用)具有不同配置的服务器。)

答案 2 :(得分:1)

会话作为文件存储在临时会话目录中。您应该能够在php.ini中找到它(或使用phpinfo())。这些都是会议。您应该能够检查文件时间,看看它们是否在最后x分钟内处于活动状态。

答案 3 :(得分:1)

您无法使用会话执行此操作,您必须将在线用户存储在数据库中,只需设置时间戳或类似内容,显示所有在5分钟内处于活动状态的人,否则删除他们的记录。