PHP的session问题

一、session时间周期设置

方法1

php文件中添加如下代码:

/* 控制session时间*/

$lifetime=60*90;

session_set_cookie_params($lifetime);

session_regenerate_id(true);

方法2

修改php.ini文件:

要实现Session的永久生命期,首先需要了解一下php.ini关于Session的相关设置

(打开php.ini文件,在“[Session]”部分):

 
1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_Stringurl中?后的值)来传递;


2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是

Query_String来传递,默认值是”PHPSESSID”;

 

3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用! 


4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除! 

 

因此,此时应修改session.gc_maxlifetime的值,比如90分钟,将其session.gc_maxlifetime=60*90

 

二、phpsession多级目录存放解决大量临时文件效率问题
1、问题
当一个目录下有很多文件时,服务器的处理性能会变低,php默认的session仅仅存放在/var/lib/php5目录下,未进行分级,当有一定的访问量时,就存在性能问题了。

2、解决方法

session多级存放可以缓解一个目录下session文件过多带来的读写效率问题。

 

session.save_path  string 设置创建session临时文件的路径。默认为 /tmp,咱们的服务器是存放在/var/lib/php5。参见 session_save_path()。
此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如,设定为 '5;/tmp' 将使创建的会话文件和路径类似于

/tmp/4/b/1/e/3 /sess_4b1e384ad74619bd212e236e52a5a174If
要使用 N 参数,必须在使用前先创建好这些目录。在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh 可以用来做这件事。此外注意如果使用了 N 参数并且 N 大于 0,那么将不会执行自动垃圾回收,更多信息见 php.ini。
另外如果用了 N 参数,要确保将 session.save_path 的值用双引号 “quotes” 括起来,因为分隔符分号( ;)在 php.ini 中也是注释符号。

参考以上说明,在定义session.save_path中可以定义多级存放的路径,于是我们可以修改php.ini中的session.save_path为:

session.save_path = “2;/var/lib/php5”
一般情况下2级目录就够了,就能够处理相当大的访问量了
如此将session文件分成两级存放,即类似于

/var/lib/php5/4/b/sess_4b1e384ad74619bd212e236e52a5a174If

取session的前两位字符作为二级目录索引,但是php并不生成目录,需要自己手工生成,这里提供一个php脚本来生成初始的目录。

$string = '0123456789abcdefghijklmnopqrstuvwxyz';

$length = strlen($string);

function makeDir($param){

 if(!file_exists($param)) {

  echo "mkdir ".$param."\n";

 // exec("mkdir ".$param);

  mkdir($param,0777);

 }

}  

 for($i = 0; $i < $length; $i++) {

   makeDir('/var/lib/php5/'.$string[$i]);

 for($j = 0; $j < $length; $j++) {

  makeDir('/var/lib/php5/'.$string[$i].'/'.$string[$j]);

 }

}

 session目录分级处理之后,IO处理值增加,http进程降低,web处理效率明显好转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值