一、介绍SESSIO信息写入到自己定义的位置
1. 解决跨机保存SESSION
在Linux下可以使用nfs或是samba, 共享文件夹的方式
使用数据库来实现
memcache来保存会话信息
session_set_save_handler()
2. 解决在线用户信息
二、介绍一下PHP配置文件中的常用选择(php.ini) (以下参数的值都用的是默认值)
session.name = PHPSESSID 用在cookie里的会话ID标识名,只能包含字母和数字。(此项也可以使用引号包起来的字符串"PHPSESSID")
session_name()获取会话名称的默认值来自此项的"PHPSESSID"
是否启用SID的支持
传递给存储处理器的参数。对于files处理器,此值是创建会话数据文件的路径。
session.save_path = "N;/path" 为默认值
session.save_path = "/tmp" Windows下默认为临时文件夹路径。
session.save_path = "N;/path" 你可以使用"N;[MODE;]/path"这样模式定义该路径(N是一个整数)。"N;MODE;/path"
N表示使用N层深度的子目录,而不是将所有数据文件都保存在一个目录下。
[MODE;]可选, 必须使用8进制数, 默认600(=384), 表示每个目录下最多保存的会话文件数量。
这是一个提高大量会话性能的好主意。
注意0: "N;[MODE;]/path"两边的双引号不能省略。
注意1: [MODE;]并不会改写进程的umask。
注意2: PHP不会自动创建这些文件夹结构。请使用ext/session目录下的mod_files.sh脚本创建。
注意3: 如果该文件夹可以被不安全的用户访问(比如默认的"/tmp"),那么将会带来安全漏洞。
注意4: 当N>0时自动垃圾回收将会失效,具体参见下面有关垃圾搜集的部分。
是否使用cookies在客户端保存会话sessionid, 默认为采用cookies
此项php.ini配置文件session.use_only_cookies = 1前面的分号去掉(未生效)
是否仅仅使用cookie在客户端保存会话sessionid, 这个选项可以使管理员禁止用户通过URL来传递id, 默认为1,
如果禁用的话, 客户端如果禁用Cookie将使session无法工作。
session.cookie_path = / 传递会话ID的Cookie作用路径(也可以使用引号包起来的路径"/")
session.cookie_domain = 传递会话ID的Cookie作用域。(默认php.ini配置文件未设置)
session.cookie_lifetime = 0 传递会话ID的Cookie有效期(秒), 0 表示仅在浏览器打开期间有效。session.cookie_domain = .aaa.com,.bbb.com
files 使用文件方式保存, 为默认值
memcache 使用memcache保存session
user 自定义的处理器(如基于数据库的处理器)
garbage collection 垃圾回收
指定过了多少秒之后数据就会被视为"垃圾",并被清除
这两个合起来就是启动gc进程管理概率的
初使化时(session_start())
session.gc_probability/session.gc_divisor
1/100
三、介绍一下session_set_save_handler()函数的使用
实际项目中,以文件的形式存储session数据,当session过多时,而且session的操作算是频繁的操作,每次脚本周期至少操作2次。
为了提升session数据区操作效率,通常将session以其他方式存储:数据库、内存,仅仅需要重写与session数据区存储相关的操作即可!
必须修改php.ini配置文件,才能使用此函数
session_set_save_handler()
发表评论