1. 办理跨机保存SESSION

在Linux下可以利用nfs或是samba, 共享文件夹的办法

利用数据库来实现

phpsession在线人数session高等用法 NoSQL

memcache来保存会话信息

session_set_save_handler()

2. 办理在线用户信息

二、先容一下PHP配置文件中的常用选择(php.ini) (以下参数的值都用的是默认值)

session.name = PHPSESSID

session.name = PHPSESSID 用在cookie里的会话ID标识名,只能包含字母和数字。
(此项也可以利用引号包起来的字符串"PHPSESSID")

session_name()获取会话名称的默认值来自此项的"PHPSESSID"

session.use_trans_sid = off

是否启用SID的支持

session.save_path = "N;/path"

通报给存储处理器的参数。
对付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时自动垃圾回收将会失落效,详细拜会下面有关垃圾搜集的部分。

session.use_cookies = 1

是否利用cookies在客户端保存会话sessionid, 默认为采取cookies

session.use_only_cookies = 0

此项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

session.save_handler = files

files 利用文件办法保存, 为默认值

memcache 利用memcache保存session

user 自定义的处理器(如基于数据库的处理器)

session.gc_maxlifetime = 1440

garbage collection 垃圾回收

指定过了多少秒之后数据就会被视为"垃圾",并被打消

session.gc_probability=1session.gc_divisor=100

这两个合起来便是启动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.save_handler = user

session_set_save_handler()

<?phpfunction open($save_path, $session_name){ global $sess_save_path; $sess_save_path = $save_path; return(true);}function close(){ return(true);}function read($id){ global $sess_save_path; $sess_file = "$sess_save_path/sess_$id"; return (string) @file_get_contents($sess_file);}function write($id, $sess_data){ global $sess_save_path; $sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "w")) { $return = fwrite($fp, $sess_data); fclose($fp); return $return; } else { return(false); }}function destroy($id){ global $sess_save_path; $sess_file = "$sess_save_path/sess_$id"; return(@unlink($sess_file));}function gc($maxlifetime){ global $sess_save_path; foreach (glob("$sess_save_path/sess_") as $filename) { //glob — 探求与模式匹配的文件路径,返回值为数组 if (filemtime($filename) + $maxlifetime < time()) { @unlink($filename); } } return true;}session_set_save_handler("open", "close", "read", "write", "destroy", "gc");session_start();// proceed to use sessions normally$_SESSION["username"] = "admin";?>