PHP会话保持Session方法

2025-10-26 13:14:23

1、1)客户端与服务器糟囊建立联系

2)客户侨耻端将session id传递给服务器

3)服务器根据session id建立相应的session id文件(session id序列棍耕欠化保存,读取时反序列化)

唯一标识的方法有两种:cookie或者通过GET方式指定

1、1)使用Session会影响系统性能(受文件系统设计影响,目录定义超过10000个文件非常耗时)

2)Session文件大小1~2K,数量庞大的小文件影响硬盘IO性能

1、默认配置文件的路径

/etc/php.ini

2、查找配置文件

find / -name php.ini

3、配置文件的参数

vim编辑/etc/php.ini

[Session]

session.save_handler = files #session的存储方式

session.use_cookies= 1 #使用cookies在客户端保存会话

session.use_only_cookies = 1 #去保护URL中传送session id的用户

session.name = PHPSESSID #session名称(默认PHPSESSID)

session.auto_start = 0 #不启用请求自动初始化session

session.cookie_lifetime = 0 #cookie存活时间(0为直至浏览器重启,单位秒)

session.cookie_path = / #cookie的有效路径

session.cookie_domain = #cookie的有效域名

session.cookie_httponly = #httponly标记增加到cookie上(脚本语言无法抓取)

session.serialize_handler = php #PHP标准序列化

session.gc_probability =1

session.gc_divisor =1000 #建议设置1000-5000

#概率=session.gc_probability/session.gc_divisor(1/1000)

#页面访问越频繁概率越小

session.gc_maxlifetime =1440 #过期时间(默认24分钟,单位秒)

session.bug_compat_42 = off #全局初始化session变量

session.bug_compat_warn = off

session.referer_check = #防止带有ID的外部URL

session.entopy_length = 0 #读取的字节

session.cache_limiter = {nocache,private,pblic} #HTTP缓冲类型

session.cache_expire = 180 #文档过期时间(分钟)

session.use_trans_sid = 1 #trans_sid支持(默认0)

session.hash_function = 0 #hash方法{0:md5(128 bits),1:SHA-1(160 bits)}

session.hash_bits_per_character = 5 #当转换二进制hash数据奥可读形式是,每个字符保留位数

session.save_path = "/var/lib/php/session" #session id存放路径

1、默认路径:

ls -l /var/lib/php/session

2、路径查找方法:

find / -name session

3、配置文件自定路径

grep session.save_path /etc/php.ini

1、文件方式保存

session.save_handler = files

2、处理器方式(如mysql)

session.save_handler = user

3、开启客户端会话保存

session.use_cookies = 1

1、场景:应用程序层有多台服务器,服务器之间做负载均衡,可通过如下方式解决

1)Session存储于数据库

2)存储于共享存储(NFS)

3)负载均衡器保持会话

1、删除24分钟内没有被改变的Session文件

cd /var/lib/php/session; find -cmin +24 | xargs rm

1、内存直接存储Session可以改善Session存储的性能(重启丢失),设置方法如下

vim编辑/etc/php.ini

修改如下参数

session.save_path = "/dev/shm"

注:"/dev/shm"相当于内存入口

1、yum -y install wget tree

PHP会话保持Session方法

1、tar -xf php-7.0.2.tar.bz2

cd php-7.0.2/ext/session

bash mod_files.sh /var/lib/php/session/ 2 5

chown -R apache:apache /var/lib/php/session/

chmod 700 -R /var/lib/php/session/

2、检查目录结构

tree /var/lib/php/session/

显示如下

PHP会话保持Session方法

3、检查目录权限

ls -l /var/lib/php/session/

4、重启httpd服务使PHP的Session相关设置生效

/etc/init.d/httpd restart

5、增加测试代码:

vim编辑/var/www/www.cmdschool.org/test.php

创建如下代码:

<?php

session_start();

$_SESSION["user_name"]="cmdschool.org";

echo $_SESSION["user_name"];

echo "&nbsp;<a href=\"test2.php\">test2</a>"

?>

vim编辑/var/www/www.cmdschool.org/test2.php

创建如下代码:

<?php

session_start();

echo $_SESSION["user_name"];

?>

6、模拟DNS解析:

notepad %SystemRoot%\System32\drivers\etc\hosts

7、建立如下映射:

10.168.0.170 www.cmdschool.org

1、浏览器测试

http://xx.xx.xx.xx/test.php

PHP会话保持Session方法

2、如上图所示:

本页生成Session变量"user_name"并赋值"cmdschool.org"

单击【test2】跳转页面

PHP会话保持Session方法

3、日志检查

tail /var/log/httpd/error_log

4、检查生成的Session文件

tree /var/lib/php/session

显示如下

PHP会话保持Session方法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢