如何获取服务器上所有活动PHP会话的列表并从一个用户的实例中访问它们?
激励案例是显示网站上所有当前活跃用户的列表,其中用户名存储在每个用户的PHP会话中。
注意:我知道我可以通过数据库(甚至是文件系统)创建自己的状态,但我正在寻找一种利用内置PHP会话机制的方法。
答案 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分钟内处于活动状态的人,否则删除他们的记录。