设置原因:
在PHP的默认设置中,session过期时间是1440秒,GC触发概率是千分之一,session文件统一存放在同一个地方。当你在服务器上搭配了多个网站,session如果不进行单独设置,它的销毁可能不是如你所愿。
1:在A网站设定session过期时间20分钟,B网站过期时间60分钟,当A网站产生请求触发了GC时,B网站最近20分钟未修改的session文件也会被删除,而不是60分钟;
2:当网站增多,session文件变多,会造成系统效率降低
所以当同一个服务器有多个网站,单独设置网站的session参数就重要起来
具体相关参数设置
注意:以下参数需要在sessin_start之前设置才可生效
- 服务端session过期时间: ini_set(‘session.gc_maxlifetime’, 1440);
- 设置session所对应的cookie在浏览器的相关参数:session_set_cookie_params
session_set_cookie_params(
int $lifetime,----在浏览器的剩余保存时间eg:5,即5秒后该cookie过期
string $path = ?,
string $domain = ?,
bool $secure = false,
bool $httponly = false
): - 读取/设置当前会话的保存路径:session_save_path(string $path = ?)
当路径值为空时,获取session的保存路径,设置路径时,则session文件会保存在改目录下;可以通过设置该目录的读取权限来提高文件的安全性;
如果网站有多个session,可以设置多个目录保存session文件,方式如下session_save_path(“2;”.APP_PATH . ‘session’);
表示将session存储到 session这个文件夹中,并且是用2及散列。每一级目录分别是0-9和a-z共36个字母数字为目录名,这样存放session的目录可以达到36*36个;需要注意的是,php自己并不会自动创建子目录,需要您自己动手去创建
这些就是网站单独配置session的一些参数,有兴趣的可以自己动手尝试一下。