一、介绍SESSIO信息写入到自己定义的位置

  1. 解决跨机保存SESSION

session高级用法20240823更新

  在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()