gpt4 book ai didi

php - 检查 PHP session_id 是否被使用

转载 作者:可可西里 更新时间:2023-11-01 13:16:48 31 4
gpt4 key购买 nike

我正在构建一个网络应用程序,用户可以上传某些文件并通过网络应用程序界面处理这些文件。我需要在用户 session 期间存储这些文件。我正在使用 session_id 作为文件夹名称为每个用户创建一个文件夹,并将文件存储在其中。

问题:没有任何迹象表明用户离开了我的站点并且 session 即将停止使用。我需要一个清理脚本,它采用每个文件夹的名称并检查 session_id 是否仍然处于事件状态,以便删除未使用的和现在无法访问的文件夹。我该怎么做?

最佳答案

我遇到了完全相同的问题。我的解决方案是检查 session 文件:

<?php
// clean-up script. Get cron/windows task scheduler to run this every hour or so

// this is the path where PHP saves session files
$session_path = ini_get('session.save_path');

// this is the directory where you have created your folders that named after the session_id:
$session_files_dir = '/path/to/your/save/dir';

// loop through all sub-directories in the above folder to get all session ids with saved files:

if ($handle = opendir($session_files_dir)) {

while (false !== ($file = readdir($handle))) {

// ignore the pseudo-entries:
if ($file != '.' && $file != '..') {

// check whether php has cleaned up the session file
if ( file_exists("$session_path/sess_$file") ) {
// session is still alive
} else {
// session has expired
// do your own garbage collection here
}

}
}

closedir($handle);
}

?>

请注意,这假设 session.save_handler ini 设置设置为 "files"session.save_path 设置没有目录级前缀(即不匹配正则表达式 /^\d+;/ )并且启用了 php 的自动 session 垃圾收集。如果上述任何一个假设都不成立,那么您无论如何都应该实现手动 session 垃圾收集,因此可以向其中添加清理代码。

这还假设 $session_files_dir 中的唯一文件是您的每个 session 文件夹,并且它们都以关联的 session_id 命名。

关于php - 检查 PHP session_id 是否被使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6206929/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com