欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【Flashlm:增加PHP的Session存储和处理能力】,下面是详细的分享!
Flashlm:增加PHP的Session存储和处理能力
可能很多PHPer都用到了PHP提供的Session功能,可以方便的进行会话功能处理,PHP服务端默认的session存储是文件存放方式,在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,*NIX下默认存放在/tmp下,如果说并发访问很大或者session建立太多,在这两个目录下就会存在大量类似sess_xxxxxx的session文件,同一个目录下文件数过多会导致性能下降,并且可能导致受到攻击最终出现文件系统错误。针对这样的情况,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目录作为php的session文件存放根目录,在该目录下进行两级目录散列,每一级目录分别是0-9和a-z共36个字母数字为目录名,这样存放session的目录可以达到36*36个,相信作为单台服务器来说,这是完全够用了,如果说您的系统架构设计为多台服务器共享session数据,可以把目录级增加到3级或者更多。
需要注意的是,php自己并不会自动创建子目录,需要您自己动手去创建,网上找到这样的自动创建目录的代码,大家可以做个参考。下面的代码自动创建3级子目录,可以自己动手根据需要进行修改。
| 以下为引用的内容: set_time_limit(0); $string='0123456789abcdefghijklmnopqrstuvwxyz'; $length=strlen($string); function makeDir($param) { if(!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($string[$i].'/'.$string[$j].'/'.$string[$k]); } } } ?> |
大家可能注意到前面的文字中提到了有关多服务器共享php的SESSION,这是很多应用都会遇到的问题,网上也有不少相关的资源,大家可以去google一下,Michael这里只提一下大概的思路。
一般来说我们用到最多的方法有两种:
1、NFS或者Samba共享的方法,让各个服务器上存放session文件的磁盘共享,这种方法简单可行。
2、集中存储到数据库中,这是比较多的实现方法,通过php提供的session_set_save_handler()函数来重定义session函数,推荐使用这种方法。
欢迎大家一起交流和讨论php中和session相关的技巧和经验。
以上所分享的是关于Flashlm:增加PHP的Session存储和处理能力,下面是编辑为你推荐的有价值的用户互动:
相关问题:PHP $_SESSION[]是否可以存储一组连续变量
答:这样不应该用SESSION来做 你每道题没有一个独立的name来区别, 那SESSION赋值必然是用入栈的方式 直接$_SESSION[] = $_POST[]; 你要的效果得确可以实现, 但是这样, SESSION保存答案的键值是以答题顺序来定的 假设你有4道题, 我答了3道以后, 我刷... >>详细
相关问题:php登录页面session存储问题
答:你sql语句都没有写,就直接执行了 $res=mysql_query($sql,$conn); $sql 是不存在的,所以 $_SESSION['login_status']=1; 没有被赋值成功 应该添加查询操作 $sql = “SELECT * FORM `table`........” 查询操作 望采纳 Thx >>详细
相关问题:求救:主机的php.ini中的session.save_path设置
答:php.ini中的session配置说明 下面介绍能让session运行的必要配置步骤手动配置PHP运行环境时,最容易遗忘的一项是服务器端session文件的存储目录配置工作,打开php.ini文件,搜索Session,找到session.save_path,默认值为/tmp,代表session文件... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
