首页 > 软件开发 > PHP >

PHP会话保持Session方法

来源:互联网 2023-03-16 18:50:32 版权归原作者所有,如有侵权,请联系我们

session是服务器保持会话数据的一种方法,对应cookie是在客户端保持用户数据。Cby办公区 - 实用经验教程分享!

Session分以下几部分:Cby办公区 - 实用经验教程分享!

1)Session idCby办公区 - 实用经验教程分享!

用户Session的唯一标识(随机生成,具有唯一性,随机性)Cby办公区 - 实用经验教程分享!

2)Session dataCby办公区 - 实用经验教程分享!

保存用户状态信息(用户数据)Cby办公区 - 实用经验教程分享!

3)Session fileCby办公区 - 实用经验教程分享!

Session的存储方式,文件存储方式以"sess_"前缀 "Session_id"后缀的方式存储Cby办公区 - 实用经验教程分享!

格式如下:Cby办公区 - 实用经验教程分享!

Cby办公区 - 实用经验教程分享!

sess_d3eom13a9r9p5i5nj923voqaf7Cby办公区 - 实用经验教程分享!

Cby办公区 - 实用经验教程分享!

Cby办公区 - 实用经验教程分享!

Cby办公区 - 实用经验教程分享!

Cby办公区 - 实用经验教程分享!

4)Session lifetimeCby办公区 - 实用经验教程分享!

Session生存时间(从Session的产生到生命周期的结束)Cby办公区 - 实用经验教程分享!

PHP会话保持Session方法Cby办公区 - 实用经验教程分享!

工具/原料

  • session
  • php

工作原理

  • 1

    1)客户端与服务器建立联系Cby办公区 - 实用经验教程分享!

    2)客户端将session id传递给服务器Cby办公区 - 实用经验教程分享!

    3)服务器根据session id建立相应的session id文件(session id序列化保存,读取时反序列化)Cby办公区 - 实用经验教程分享!

    唯一标识的方法有两种:cookie或者通过GET方式指定Cby办公区 - 实用经验教程分享!

  • 1
  • Session的缺点

  • 1

    1)使用Session会影响系统性能(受文件系统设计影响,目录定义超过10000个文件非常耗时)Cby办公区 - 实用经验教程分享!

    2)Session文件大小1~2K,数量庞大的小文件影响硬盘IO性能Cby办公区 - 实用经验教程分享!

  • Session配置文件

  • 1

    默认配置文件的路径Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    /etc/php.iniCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 2

    查找配置文件Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    find/-namephp.iniCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 3

    配置文件的参数Cby办公区 - 实用经验教程分享!

    vim编辑/etc/php.iniCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    [Session]Cby办公区 - 实用经验教程分享!

    session.save_handler=files#session的存储方式Cby办公区 - 实用经验教程分享!

    session.use_cookies=1#使用cookies在客户端保存会话Cby办公区 - 实用经验教程分享!

    session.use_only_cookies=1#去保护URL中传送sessionid的用户Cby办公区 - 实用经验教程分享!

    session.name=PHPSESSID#session名称(默认PHPSESSID)Cby办公区 - 实用经验教程分享!

    session.auto_start=0#不启用请求自动初始化sessionCby办公区 - 实用经验教程分享!

    session.cookie_lifetime=0#cookie存活时间(0为直至浏览器重启,单位秒)Cby办公区 - 实用经验教程分享!

    session.cookie_path=/#cookie的有效路径Cby办公区 - 实用经验教程分享!

    session.cookie_domain=#cookie的有效域名Cby办公区 - 实用经验教程分享!

    session.cookie_httponly=#httponly标记增加到cookie上(脚本语言无法抓取)Cby办公区 - 实用经验教程分享!

    session.serialize_handler=php#PHP标准序列化Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    session.gc_probability=1Cby办公区 - 实用经验教程分享!

    session.gc_divisor=1000#建议设置1000-5000Cby办公区 - 实用经验教程分享!

    #概率=session.gc_probability/session.gc_divisor(1/1000)Cby办公区 - 实用经验教程分享!

    #页面访问越频繁概率越小Cby办公区 - 实用经验教程分享!

    session.gc_maxlifetime=1440#过期时间(默认24分钟,单位秒)Cby办公区 - 实用经验教程分享!

    session.bug_compat_42=off#全局初始化session变量Cby办公区 - 实用经验教程分享!

    session.bug_compat_warn=offCby办公区 - 实用经验教程分享!

    session.referer_check=#防止带有ID的外部URLCby办公区 - 实用经验教程分享!

    session.entopy_length=0#读取的字节Cby办公区 - 实用经验教程分享!

    session.cache_limiter={nocache,private,pblic}#HTTP缓冲类型Cby办公区 - 实用经验教程分享!

    session.cache_expire=180#文档过期时间(分钟)Cby办公区 - 实用经验教程分享!

    session.use_trans_sid=1#trans_sid支持(默认0)Cby办公区 - 实用经验教程分享!

    session.hash_function=0#hash方法{0:md5(128bits),1:SHA-1(160bits)}Cby办公区 - 实用经验教程分享!

    session.hash_bits_per_character=5#当转换二进制hash数据奥可读形式是,每个字符保留位数Cby办公区 - 实用经验教程分享!

    session.save_path="/var/lib/php/session"#sessionid存放路径Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • session的保存目录

  • 1

    默认路径:Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    ls-l/var/lib/php/sessionCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 2

    路径查找方法:Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    find/-namesessionCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 3

    配置文件自定路径Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    grepsession.save_path/etc/php.iniCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • session的保存方式

  • 1

    文件方式保存Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    session.save_handler=filesCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 2

    处理器方式(如mysql)Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    session.save_handler=userCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 3

    开启客户端会话保存Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    session.use_cookies=1Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • Session的同步

  • 1

    场景:应用程序层有多台服务器,服务器之间做负载均衡,可通过如下方式解决Cby办公区 - 实用经验教程分享!

    1)Session存储于数据库Cby办公区 - 实用经验教程分享!

    2)存储于共享存储(NFS)Cby办公区 - 实用经验教程分享!

    3)负载均衡器保持会话Cby办公区 - 实用经验教程分享!

  • Session的管理脚本

  • 1

    删除24分钟内没有被改变的Session文件Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    cd/var/lib/php/session;find-cmin 24|xargsrmCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 内存直存Session的方法

  • 1

    内存直接存储Session可以改善Session存储的性能(重启丢失),设置方法如下Cby办公区 - 实用经验教程分享!

    vim编辑/etc/php.iniCby办公区 - 实用经验教程分享!

    修改如下参数Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    session.save_path="/dev/shm"Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    注:"/dev/shm"相当于内存入口Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • yum源安装

  • 1

    yum-yinstallwgettreeCby办公区 - 实用经验教程分享!

    PHP会话保持Session方法Cby办公区 - 实用经验教程分享!

  • 配置部分

  • 1

    tar-xfphp-7.0.2.tar.bz2Cby办公区 - 实用经验教程分享!

    cdphp-7.0.2/ext/sessionCby办公区 - 实用经验教程分享!

    bashmod_files.sh/var/lib/php/session/25Cby办公区 - 实用经验教程分享!

    chown-Rapache:apache/var/lib/php/session/Cby办公区 - 实用经验教程分享!

    chmod700-R/var/lib/php/session/Cby办公区 - 实用经验教程分享!

  • 2

    检查目录结构Cby办公区 - 实用经验教程分享!

    tree/var/lib/php/session/Cby办公区 - 实用经验教程分享!

    显示如下Cby办公区 - 实用经验教程分享!

    PHP会话保持Session方法Cby办公区 - 实用经验教程分享!

  • 3

    检查目录权限Cby办公区 - 实用经验教程分享!

    ls-l/var/lib/php/session/Cby办公区 - 实用经验教程分享!

  • 4

    重启httpd服务使PHP的Session相关设置生效Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    /etc/init.d/httpdrestartCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 5

    增加测试代码:Cby办公区 - 实用经验教程分享!

    vim编辑/var/www/www.cmdschool.org/test.phpCby办公区 - 实用经验教程分享!

    创建如下代码:Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    ?phpCby办公区 - 实用经验教程分享!

    session_start();Cby办公区 - 实用经验教程分享!

    $_SESSION["user_name"]="cmdschool.org";Cby办公区 - 实用经验教程分享!

    echo$_SESSION["user_name"];Cby办公区 - 实用经验教程分享!

    echo" ahref="test2.php">test2/a>"Cby办公区 - 实用经验教程分享!

    ?>Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    vim编辑/var/www/www.cmdschool.org/test2.phpCby办公区 - 实用经验教程分享!

    创建如下代码:Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    ?phpCby办公区 - 实用经验教程分享!

    session_start();Cby办公区 - 实用经验教程分享!

    echo$_SESSION["user_name"];Cby办公区 - 实用经验教程分享!

    ?>Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 6

    模拟DNS解析:Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    notepad%SystemRoot%System32driversetchostsCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 7

    建立如下映射:Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    10.168.0.170www.cmdschool.orgCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 测试与检查

  • 1

    浏览器测试Cby办公区 - 实用经验教程分享!

    http://xx.xx.xx.xx/test.phpCby办公区 - 实用经验教程分享!

    PHP会话保持Session方法Cby办公区 - 实用经验教程分享!

  • 2

    如上图所示:Cby办公区 - 实用经验教程分享!

    本页生成Session变量"user_name"并赋值"cmdschool.org"Cby办公区 - 实用经验教程分享!

    单击【test2】跳转页面Cby办公区 - 实用经验教程分享!

    PHP会话保持Session方法Cby办公区 - 实用经验教程分享!

  • 3

    日志检查Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    tail/var/log/httpd/error_logCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

  • 4

    检查生成的Session文件Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    tree/var/lib/php/sessionCby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    Cby办公区 - 实用经验教程分享!

    显示如下Cby办公区 - 实用经验教程分享!

    PHP会话保持Session方法Cby办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Cby办公区 - 实用经验教程分享!


    标签: PHP

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号