zoukankan      html  css  js  c++  java
  • PHP中Session在配置和自定义文件存储

    一、介绍SESSIO信息写入到自己定义的位置
     
    1. 解决跨机保存SESSION
    在Linux下可以使用nfs或是samba, windows共享文件夹的方式
     
    使用数据库来实现
     
    memcache来保存会话信息
     
    session_set_save_handler()
     
    2. 解决在线用户信息
     
     
    二、介绍一下PHP配置文件中的常用选择(PHP.in) (写个例子演示, 以下参数,用默认的存储方未予)
    session.name
    session.use_trans_sid  等于1:启用SID的支持,默认为0
    session.save_path=
     
    session.use_cookies =1 默认
    session.cookie_path = '/'  默认
    session.cookie_domain = '' 默认
    session.cookie_lifetime = 0  0表示关闭浏览器,cookie到期,单位为秒
     
    session.save_handler= memcache 或 user  默认为files
     
    session.gc_maxlifetime
    garbage collection 垃圾回收
     
    指定过了多少秒之后数据就会被视为“垃圾”,并被清除
     
    session.gc_probability=1
    session.gc_divisor=100
    这两个合起来就是启动gc进程管理概率的
     
    初使化时(session_start())
     
    session.gc_probability/session.gc_divisor
    1/100:百分之一的概率启动垃圾回收
     
     
    三、介绍一下session_set_save_handler()函数的使用
     
     
    session_set_save_handler()
     
     
     
    四、写入自己定义的文件,或远程服务器的硬盘中
       
    1、自定义的session类 session.php
    <?php
    
    //在运行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数据到$_SESSION中
    function read($id){
    global $sess_save_path;
    $sess_file=$sess_save_path."/glf_".$id;
    
    return (string)@file_get_contents($sess_file);
    
    }
    //结束时和session_write_close()强制提交SESSION数据 $_SESSION[]="aaa";
    function write($id, $sess_data){
    global $sess_save_path;
    $sess_file=$sess_save_path."/glf_".$id;
    
    if($fp=@fopen($sess_file, "w")){
    $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."/glf_".$id;
    
    return @unlink($sess_file);
    }
    
    //ession.gc_probability和session.gc_divisor值决定的,open(), read() session_start也会执行gc
    function gc($maxlifetime){
    global $sess_save_path;
    
    foreach(glob($sess_save_path."/glf_*") as $filename){
    if(filemtime($filename)+$maxlifetime < time() ){
    @unlink($filename);
    echo $filename;
    }
    }
    
    return true;
    }
    
    session_set_save_handler("open", "close", "read", "write", "destroy","gc");
    
    session_start();
    ?> 
    
     
     
    2、自设定的:one.php
    <?php
    include "session.php";
    
    $_SESSION["isLogin3"]=1;
    $_SESSION["username"]="admin";
    $_SESSION["uid"]=333;
    
    echo session_name().'='.session_id().'<br>';
    ?>
    
     
     
    3、在第二个页面取session的值:two.php
    <?php
    include "session.php";
    
    print_r($_SESSION);
    echo '<br>';
    
    echo session_name().'='.session_id().'<br>';
    ?>
    
     
     
    4、清楚session值:three.php
    <?php
    include "session.php";
    
    $_SESSION=array();
    
    if(isset($_COOKIE[session_name()])){
    setCookie(session_name(), '', time()-100, '/');
    }
    
    session_destroy();
    
    echo session_name().'='.session_id().'<br>';
    ?>
    
  • 相关阅读:
    【荐2】Total Commander 7.57 配置选项 个性化设置备份,,,开启时如何自动最大化???(二)
    【荐1】Total Commander 7.57 个人使用设置 及 常用快捷键 备忘
    Total Commander 集成、调用 Beyond Compare比较文件
    Linux/CentOS下开启MySQL远程连接,远程管理数据库
    如何查看、修改Linux的系统时间
    Linux cp (复制)命令简介
    Linux网络下载命令 wget 简介
    Linux如何下解压windows下的.zip和.rar文件
    Linux tar (打包.压缩.解压缩)命令说明 | tar如何解压文件到指定的目录?
    解决宿主机不能访问虚拟机CentOS中的站点 | 更新CentOS防火墙设置开启80端口访问
  • 原文地址:https://www.cnblogs.com/gxldan/p/4066852.html
Copyright © 2011-2022 走看看