专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » session的存储方式:增加PHP的Session存储和处理能力 »正文

session的存储方式:增加PHP的Session存储和处理能力

来源: 发布时间:星期一, 2009年1月12日 浏览:41次 评论:0
  可能很多PHPer都用到了PHP提供Session功能可以方便进行会话功能处理PHP服务端默认session存储是文件存放方式在Windows上PHP默认Session服务端文件存放在C:WINDOWSTemp下*NIX下默认存放在/tmp下如果说并发访问很大或者session建立太多在这两个目录下就会存在大量类似sess_xxxxxxsession文件个目录下文件数过多会导致性能下降并且可能导致受到攻击最终出现文件系统针对这样情况PHP本身体提供了比较好解决办法

  不少朋友可能都没有注意到php.ini里面Session设置部分中有这样项:

  ;  session.save_path = "N;MODE;/path"

  这项设置提供给我们可以给session存放目录进行多级散列其中“N”表示要设置目录级数“MODE”表示目录权限属性默认为600在WINDOWS上基本是不用设置*NIX上也可以不用设置后面“/path”表示session文件存放根目录路径比如我们设置为下面格式

  session.save_path = "2;/tmp/phpsession"

  上面设置表示我们把/tmp/phpsession目录作为phpsession文件存放根目录在该目录下进行两级目录散列级目录分别是0-9和a-z共36个字母数字为目录名这样存放session目录可以达到36*36个相信作为单台服务器来说这是完全够用了如果说您系统架构设计为多台服务器共享session数据可以把目录级增加到3级或者更多

  需要注意php自己并不会自动创建子目录需要您自己动手去创建网上找到这样自动创建目录代码大家可以做个参考下面代码自动创建3级子目录可以自己动手根据需要进行修改

<?php
_time_limit(0);
$ = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($);
function makeDir($param)
{
  (!file_exists($param)) {
    makeDir(dirname($param));
    mkdir($param);
  }
}
for($i = 0; $i < $length; $i) {
  for($j = 0; $j < $length; $j) {
    for($k = 0; $k < $length; $k) {
      makeDir($[$i].'/'.$[$j].'/'.$[$k]);
    }
  }
}
?>


  大家可能注意到前面文字中提到了有关多服务器共享phpSESSION这是很多应用都会遇到问题网上也有不少相关资源大家可以去googleMichael这里只提下大概思路

  般来说我们用到最多思路方法有两种:

  1、NFS或者Samba共享思路方法让各个服务器上存放session文件磁盘共享这种思路方法简单可行

  2、集中存储到数据库中这是比较多实现思路方法通过php提供session__save_handler来重定义session推荐使用这种思路方法

  欢迎大家起交流和讨论php中和session相关窍门技巧和经验

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: