自定义session信息写入文件

这篇博客介绍了如何在PHP中自定义session的保存路径,将session信息存储到指定的D:/session目录下。通过修改PHP配置文件并实现session处理函数,实现了文件存储session,并详细解释了session配置选项的作用,包括session.name、session.use_cookies等。同时,博客还提供了完整的代码示例,用于在session开始、结束、读取、写入和销毁时的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写网站程序时,可能会要求session写到规定的路径,所以,写了这个php文件,已验证成功,不足之处,欢迎多多指教。学习中

自定义session文件保存路径

保存到 D:/session

 

介绍一下PHP配置文件中的常用选择(PHP.ini)

session.name                  session名称

session.use_trans_sid         启用SID的支持  

session.save_path             session保存路径 

 

基于cookiesession信息

session.use_cookies = 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

 

代码如下:

<?php

/*
自定义用文件存储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<time()){ //session文件上次修改的是时间+保存时间<当前时间 则删除
            unlink($filename);
        }
   }

   return true;
}

session_set_save_handler('open','close','read','write','destroy','gc');

session_start();

 

?>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值