????怎样删除session文件????
由于我在网页中用到了session,但是,每打开一次主页时,它都会生成一个session文件在php的session目录中,如果打开n次,那不是要生成n个session文件。
所以我想在关闭浏览器时,自动删除session文件(注:不是删除session,而是删除整个文件),请问怎么做?
如果不生成session文件最好,请问这个是否能实现,又该怎么做?.
问题点数:0、回复次数:10Top
1 楼feel8(Max.H)回复于 2003-10-04 11:51:54 得分 0
好像办不到,
可以写一个程序,定期运行,删掉所有session
或是把session保存目录设在系统temp文件夹 ,系统重启会自动处理Top
2 楼jueban9818(是孟是E,是思是归,反正不是大灰狼)回复于 2003-10-04 23:57:16 得分 0
up~Top
3 楼arcow(冲星)回复于 2003-10-05 01:38:42 得分 0
关注ingTop
4 楼CPerlAsm_Lx(一叶知秋)回复于 2003-10-05 05:46:55 得分 0
啊,哎呀,刚学不知道Top
5 楼fufan(fufan)回复于 2003-10-05 10:10:00 得分 0
顶一顶Top
6 楼benchozhang(benchozhang)回复于 2003-10-06 17:41:41 得分 0
楼主,不生成session那还用session干吗?Top
7 楼sunthing(重出江湖)回复于 2003-10-07 11:37:30 得分 0
session 是系统(PHP)自己管理 的啊,一般是一个星期以后就会被删掉,你也可在PHP.INI中修改,其实也只是一个随机号等信息而已,不会占多少空间,我觉得没有必要人为管理!Top
8 楼phping(老七)回复于 2003-10-07 12:28:09 得分 0
在不用SESSION的情况下可用下面禁止自动生成:
ini_set("session.auto_star",0);
如果使用SESSION,又不想以文件方式保存,可以考虑使用session_set_save_handler存入数据库:
if(!mysql_table_exists("sessions",$DB))
{
$query = 'CREATE TABLE sessions
(
SessionID char(255) not null,
LastUpdated datetime not null,
DataValue text,
PRIMARY KEY ( SessionID ),
INDEX ( LastUpdated )
)';
mysql_query($query);
}
function sessao_open($aSavaPath, $aSessionName)
{
global $aTime;
sessao_gc( $aTime );
return True;
}
function sessao_close()
{
return True;
}
function sessao_read( $aKey )
{
$query = "SELECT DataValue FROM sessions WHERE SessionID='$aKey'";
$busca = mysql_query($query);
if(mysql_num_rows($busca) == 1)
{
$r = mysql_fetch_array($busca);
return $r['DataValue'];
} ELSE {
$query = "INSERT INTO sessions (SessionID, LastUpdated, DataValue)
VALUES ('$aKey', NOW(), '')";
mysql_query($query);
return "";
}
}
function sessao_write( $aKey, $aVal )
{
$aVal = addslashes( $aVal );
$query = "UPDATE sessions SET DataValue = '$aVal', LastUpdated = NOW() WHERE SessionID = '$aKey'";
mysql_query($query);
return True;
}
function sessao_destroy( $aKey )
{
$query = "DELETE FROM sessions WHERE SessionID = '$aKey'";
mysql_query($query);
return True;
}
function sessao_gc( $aMaxLifeTime )
{
$query = "DELETE FROM sessions WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(LastUpdated) > $aMaxLifeTime";
mysql_query($query);
return True;
}
session_set_save_handler("sessao_open", "sessao_close", "sessao_read", "sessao_write", "sessao_destroy", "sessao_gc");
Top
9 楼dragonsdg3(什么刀)回复于 2003-10-07 20:31:59 得分 0
upTop
10 楼ashchen(老陳)回复于 2003-10-08 09:53:31 得分 0
php清除session临时文件的默认概率是千分之一
如果网站流量大可以把概率调小,流量小的话可以调高
具体在php.ini的[session]段
session.gc_probability = 1
session.gc_divisor = 100
这样设置是100次访问会激活一次清除垃圾的进程Top




