不可能在PHP SESSIONS中获得所有session_id
的列表?获取所有PHP会话列表session_id
注: 我需要在服务器中维护一些文件。一个文件等于一个会话。如果SESSION过期,我需要确定旧文件的行为。
谢谢大家的任何建议。
不可能在PHP SESSIONS中获得所有session_id
的列表?获取所有PHP会话列表session_id
注: 我需要在服务器中维护一些文件。一个文件等于一个会话。如果SESSION过期,我需要确定旧文件的行为。
谢谢大家的任何建议。
我想在一个旧项目中做到这一点。
我命名的文件与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,打开它并测试内部是否有东西。 (我在每个会话打开后写了一些东西)
但是要小心,这段代码从来没有进入生产环境。
谢谢 - 为我修改这项工作。 – LukasSvihel 2011-05-13 16:13:38
你能做到让所有现有会话ID列表的最好的是:
preg_grep("/^sess_/", scandir(ini_get("session.save_path")))
但是不会告诉你哪些文件仍然有效。我真的不明白你的问题的第二部分。但是可以手动将它们反序列化以探测属性。
此代码不起作用。我是否回应 - 对吗? 'echo $ temp = preg_grep(“/^sess_ /”,scandir(ini_get(“session.save_path”))); echo $ temp [0];' – LukasSvihel 2011-05-13 13:53:29
'print_r()'在数组上效果更好。 – mario 2011-05-13 13:55:52
谢谢。现在它是打印信息。 – LukasSvihel 2011-05-13 14:33:49
正如其他人所回答的,会话存储在session.save_path
定义的路径php.ini
中,您可以迭代此目录以检索每个会话的列表。
替代方法将更改会话存储并使用session_set_save_handler()
将其移动到数据库。您可以将所有会话存储在数据库中,并根据需要进行处理。
这个好主意,但我不能改变'php.ini'和'session.save_path'默认设置为'/ dev/shm'不存在的路径:( – LukasSvihel 2011-05-13 13:45:39
我不认为有 - 你必须在创建时手动跟踪它们。你需要做什么? – 2011-05-13 11:50:20
我创建混搭Web应用程序,我需要插入一个图像到Flickr在'canvas'中的会话。但是'canvas'不能使用来自远程服务器的图像。所以我用PHP在本地保存,然后使用。但当然,我需要清理临时文件夹 - 如果会话过期文件不是必需的。因此,如果创建新会话,我会检查临时是否仅包含图像平等ID活动会话。 – LukasSvihel 2011-05-13 12:55:51