增长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这里只提一下大概的思路。  通常来讲咱们用到最多的方法有两种:  一、NFS或者Samba共享的方法,让各个服务器上存放session文件的磁盘共享,这种方法简单可行。  二、集中存储到数据库中,这是比较多的实现方法,经过php提供的session_set_save_handler()函数来重定义session函数,推荐使用这种方法。  欢迎你们一块儿交流和讨论php中和session相关的技巧和经验。
相关文章
相关标签/搜索