phpsession配置

1. 介绍

1.1 作用:

主要用于服务器端的会话保持。

1.2 结构:

Session分以下几部分:

 1)Session id 用户Session的唯一标识(随机生成,具有唯一性,随机性)

 2)Session data 保存用户状态信息(用户数据) 

 3)Session file Session的存储方式,文件存储方式以"sess_"前缀+"Session_id"后缀的方式存储 格式如下: 1 sess_d3eom13a9r9p5i5nj923voqaf7 

 4)Session lifetime Session生存时间(从Session的产生到生命周期的结束)

1.3 工作原理:

 1)客户端与服务器建立联系 

 2)客户端将session id传递给服务器 

 3)服务器根据session id建立相应的session id文件(session id序列化保存,读取时反序列化) 

唯一标识的方法有两种:cookie或者通过GET方式指定

1.4 缺点:

1)使用Session会影响系统性能(受文件系统设计影响,目录定义超过10000个文件非常耗时) 

2)Session文件大小1~2K,数量庞大的小文件影响硬盘IO性能

    PS:此可以使用redis memcache的方式来共享session ,同时也解决了影响系统性能的问题

2.配置文件:

[Session]

 session.save_handler = files #session的存储方式

 session.use_cookies= 1 #使用cookies在客户端保存会话 

 session.use_only_cookies = 1 #去保护URL中传送session id的用户

 session.name = PHPSESSID #session名称(默认PHPSESSID)

 session.auto_start = 0 #不启用请求自动初始化session

 session.cookie_lifetime = 0 #cookie存活时间(0为直至浏览器重启,单位秒) 

 session.cookie_path = / #cookie的有效路径 

 session.cookie_domain = #cookie的有效域名

 session.cookie_httponly = #httponly标记增加到cookie上(脚本语言无法抓取) 

 session.serialize_handler = php #PHP标准序列化 

 session.gc_probability =1 

 session.gc_divisor =1000 #建议设置1000-5000 #概率=session.gc_probability/session.gc_divisor(1/1000 #页面访问越频繁概率越小   session.gc_maxlifetime =1440 #过期时间(默认24分钟,单位秒) 

 session.bug_compat_42 = off #全局初始化session变量 

 session.bug_compat_warn = off 

 session.referer_check = #防止带有ID的外部URL 

    session.entopy_length = 0 #读取的字节 

 session.cache_limiter = {nocache,private,pblic} #HTTP缓冲类型

 session.cache_expire = 180 #文档过期时间(分钟) 

   session.use_trans_sid = 1 #trans_sid支持(默认0)

 session.hash_function = 0 #hash方法{0:md5(128 bits),1:SHA-1(160 bits)} 

 session.hash_bits_per_character = 5 #当转换二进制hash数据奥可读形式是,每个字符保留位数

 session.save_path = "/var/lib/php/session" #session id存放路径

可以分层存放phpsession,更高效率的去查找session文件

  格式: session.save_path = "N;MODE;/path"

-- N定义目录层数(例如2,目录需手动创建)

-- MODE定义单目录最大会话文件数量(默认8进制600)

配置好之后,需要按自定义的目录层数,需结合hash_bits_per_character参数来生成目录结构

#!/bin/bash
perl -e '
       $dir="./phpsession";
       @N=(0..9,"a".."z");
       for $i (0..$#N) {
               mkdir "$dir/$N[$i]";
               for $j (0..$#N) {
                       mkdir "$dir/$N[$i]/$N[$j]";
                       for $k (0..$#N) {
                               mkdir "$dir/$N[$i]/$N[$j]/$N[$k]";
                       }
               }
       }'

 

 

 

PS:

 4 bits: 0-9, a-f

 5 bits: 0-9, a-v

 6 bits: 0-9, a-z, A-Z, "-", ","

posted @ 2017-03-06 09:37  Fuzengjie  阅读(4158)  评论(0编辑  收藏  举报