自定义session问题(session_set_save_handler)

juge 2004-01-05 08:21:45
<?php
$sess_save_path = "C:/tmp";

function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name;

$sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}

function close() {
return(true);
}

function read ($id) {
global $sess_save_path, $sess_session_name;

$sess_file = "$sess_save_path/sess_{$id}";
if ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data);
} else {
return(""); // Must return "" here.
}

}

function write ($id, $sess_data) {
global $sess_save_path, $sess_session_name;

$sess_file = "$sess_save_path/sess_{$id}";
if ($fp = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data));
} else {
return(false);
}

}

function destroy ($id) {
global $sess_save_path, $sess_session_name;

$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file));
}

/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here. *
*********************************************/
function gc ($maxlifetime) {
global $sess_save_path;
$all = opendir($sess_save_path);
while ($file = readdir($all)) {
$thisfile = $sess_save_path."/".$file;
if (is_file($thisfile) && ($thisfile != "a.php")) {
@unlink($thisfile);
}
}
closedir($all);
unset($all);
return true;
}

session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_save_path($sess_save_path);
session_start();

// proceed to use sessions normally


$_SESSION["name"]="123456";

echo $_SESSION["name"];

?>

以上是我照着手册上的修改了的。运行其它都是一切正常,很好。但唯一一点的就是gc函数好像始终没有调用到。不知道为什么?我怎么才能让gc函数能够正常调用到。gc函数好像就是清除过期的session吧。如果这个函数不能正常被调用,那么过期session文件将得不到及时清除,session文件将会越来越多。
大家看看改如何处理,谢谢!
...全文
100 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧