获取所有 PHP session_id 的列表

发布于 2024-11-07 08:47:02 字数 149 浏览 3 评论 0原文

无法获取 PHP SESSIONS 中所有 session_id 的列表吗?

笔记: 我需要在服务器中维护一些文件。一个文件等于一个会话。如果会话过期,我需要确定旧文件的行为。


谢谢大家的建议。

Is't possible to get list of all session_id in PHP SESSIONS?

Note:
I need maintained some file in the server. One file equal one session. And I need to determine behaviour of old files if SESSION expire.


Thank you all for any advice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜血缘 2024-11-14 08:47:02

正如其他人所回答的,会话存储在 php.ini 中由 session.save_path 定义的路径中,您可以迭代此目录以检索每个会话的列表。

替代方法是更改会话存储并使用 session_set_save_handler()。您可以将所有会话存储在数据库中,并按照您的意愿使用它。

As others have answered, sessions are stored in the path defined by session.save_path in php.ini and you can iterate this directory to retrieve a list of every session.

An alternative approach would be to change the session storage and move it to a database using session_set_save_handler(). You could store all your sessions in a database and do with it whatever you wish.

日记撕了你也走了 2024-11-14 08:47:02

要获取所有现有会话 ID 的列表,您可以做的最好的事情是:

preg_grep("/^sess_/", scandir(ini_get("session.save_path")))

但这不会告诉您哪些文件仍然有效。我不太明白你问题的第二部分。但可以手动反序列化它们以探测属性。

The best you can do to get a list of all existing session IDs is:

preg_grep("/^sess_/", scandir(ini_get("session.save_path")))

But that won't tell you which files are still valid. And I don't really get the second part of your question. But it is possible to unserialize them manually to probe for attributes.

紫轩蝶泪 2024-11-14 08:47:02

我想在一个旧项目中这样做。

我用 session_id 命名文件(类似于:sessionid_some_file.tmp):

_TMP_PATH_:要检查的文件所在的路径。

foreach(new DirectoryIterator(_TMP_PATH_) as $file)
{
    if(preg_match('/(.*)_(.*)_(.*)\.tmp/', $file->getFilename(), $data))
    {
        session_write_close();
        $session_id = $data[1];
        session_id($session_id);
        session_start();
        if(empty($_SESSION))
        {
            unlink(_TMP_PATH_ . $file->getFilename()); 
        }
    }
}
session_write_close();

foreach 文件我得到了 session_id,打开它并测试里面是否有东西。 (我在每个会话打开后都写了一些东西)

但是要小心,这段代码从未在生产环境中出现过。

i'd to do this in an old project.

i named the files with the session_id (something like this: sessionid_some_file.tmp) :

_TMP_PATH_ : path where the files to check are.

foreach(new DirectoryIterator(_TMP_PATH_) as $file)
{
    if(preg_match('/(.*)_(.*)_(.*)\.tmp/', $file->getFilename(), $data))
    {
        session_write_close();
        $session_id = $data[1];
        session_id($session_id);
        session_start();
        if(empty($_SESSION))
        {
            unlink(_TMP_PATH_ . $file->getFilename()); 
        }
    }
}
session_write_close();

foreach files i get the session_id, open it and test if something inside. (i wrote something after each session opened)

But be carefull, this piece of code has never been in a production environnment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文