1. 办理跨机保存SESSION
在Linux下可以利用nfs或是samba, 共享文件夹的办法
利用数据库来实现
memcache来保存会话信息
session_set_save_handler()
2. 办理在线用户信息
二、先容一下PHP配置文件中的常用选择(php.ini) (以下参数的值都用的是默认值)
session.name = PHPSESSID
session.name = PHPSESSID 用在cookie里的会话ID标识名,只能包含字母和数字。(此项也可以利用引号包起来的字符串34;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";?>