- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在 PHP 中有没有办法获取服务器上所有 session (以及每个 session 中的变量)的列表?
基本上,我们有一个维护功能,需要知道哪些用户当前登录到站点。我们已经将每个用户的数据存储在一个 session 变量中,但我希望我可以遍历每个 session 并提取我需要的数据。
我的 PHP 非常有限(我通常是 .Net 开发人员),但如果有人知道这是否可行(以及如何实现),我将不胜感激。我用谷歌搜索了这个,我发现的结果往往表明这是不可能的,但我发现这很难接受。
不过,如果你做不到,你就做不到,但我认为我在 StackOverflow 上的 friend 可以给我一个明确的答案!
最佳答案
PHP 将每个用户的 session 数据存储在服务器上的一个临时文件夹中。此文件夹在变量 session.save_path 下的 php.ini 配置文件中定义。从您的 php.ini 文件中找到此值,或者创建一个包含以下内容的 php 文件:
<?php echo "Session Save Path: " . ini_get( 'session.save_path');?>
按其内容,在浏览器中打开文件。
找到 session 数据的保存路径后,打开该文件夹,您会发现一个相当简单的结构。所有 session 都以以下格式存储:sess_$SESSIONID。
session 数据在存储到磁盘之前被序列化。因此,存储在 session 文件中的对象在可用之前必须被反序列化。但是,如果您使用按原样存储的纯文本来存储您的 session 数据(例如 $_SESSION['userid'] = 1234
)来存储有关您的用户的信息,它应该很容易从文件中解析出您要查找的数据。
还有一件事……我没有仔细研究过,但似乎出现在文件名中的 session ID 直接对应于例如存储在用户计算机上的 PHPSESSID cookie 的名称。因此,考虑到这一点,可以循环遍历临时 session 目录中的文件,获取所有 $SESSIONID 值,使用 session_id($SESSIONID)
设置当前 session ID,启动一个使用 session_start()
进行 session 并通过 PHP 访问您需要的数据,而无需自己解析内容文件。谁能确认这是否可行?
编辑:调整帖子以匹配 Itay 的评论。
关于php - 在 PHP 中循环遍历所有服务器的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675913/
我是一名优秀的程序员,十分优秀!