写网站程序时,可能会要求session写到规定的路径,所以,写了这个php文件,已验证成功,不足之处,欢迎多多指教。学习中
自定义session文件保存路径
保存到 D:/session
介绍一下PHP配置文件中的常用选择(PHP.ini)
session.name session名称
session.use_trans_sid 启用SID的支持
session.save_path session保存路径
基于cookie的session信息
session.use_cookies = 1 是否指定客户端互为会话 1
session.cookie_path = '/' 指定会话的cookie的路径 删cookie是一定要加上 /
session.cookie_domain ='' 指定设置会话cookie默认的域名
session.cookie_lifetime =0 cookie在客户端保存的时间
session.save.handler=files/user/memcache 系统默认/用户自定义/mem来保存会话信息
session.gc_maxlifetime
垃圾回收 garbagecollection
指定过了多少秒之后数据就会被视为“垃圾”,并被清除
session.gc_probability=1
session.gc.divisor=100
这两个合起来就是启动gc进程管理概率的
初始化时(session_start())
session.gc.probability/session.gc.divisor
1/100 (即1%的概率删。一百个没用的当中删一个)
首先,把php.ini的这个方法给成user,session.save_handler = user ;可以改成files/user/memcache
代码如下:
/*
自定义用文件存储session信息
*/
//在运行session_start()的时候执行 //启动会话
function open($save_path,$session_name){
global $sess_save_path;
$sess_save_path =$save_path;
return true;
}
//session_write_close()和session_destroy()的执行
function close(){
return true;
}
//也是session_start()时候执行,读取session写入到$_SESSION中
function read($id){
global $sess_save_path;
$sess_file=$sess_save_path."/wzy_".$id;
return (string) @file_get_contents($sess_file); //文件操作读session
//语句前面加个@表示 屏蔽错误
}
//脚本结束时和session_write_close()强制提交SESSION数据时执行
function write($id,$sess_data){
global $sess_save_path;
$sess_file=$sess_save_path."/wzy_".$id;
if($fp=fopen($sess_file,"w")){ //把session数据用文件操作写入文件
$return=fwrite($fp,$sess_data);
fclose($fp);
return $return;
}else{
return false;
}
}
//执行session_destroy()时候销毁
function destroy($id){
global $sess_save_path;
$sess_file=$sess_save_path."/wzy_".$id;
return unlink($sess_file); //文件操作销毁指定文件
}
//session.gc_probability和session.gc.divisor的值决定的,时机是在open(),read(),session_start()的时候执行gc
function gc($maxlifetime){
global $sess_save_path;
foreach(glob($sess_save_path."/wzy_*") as $filename){
if(filemtime($filename)+$maxlifetime
return true;
}
session_set_save_handler('open','close','read','write','destroy','gc');
session_start();
?>