PHP实现session共享
程序员文章站
2024-03-18 23:51:22
...
3.1 问题
沿用练习三,通过修改PHP-FPM配置文件,实现session会话共享:
配置PHP使用memcached服务器共享Session信息
客户端访问两台不同的后端Web服务器时,Session 信息一致
3.2 方案
在练习三拓扑的基础上,Nginx服务器除了承担调度器外,还需要担任memcached数据库的角色,并在两台后端LNMP服务器上实现PHP的session会话共享。拓扑结构如图-4所示。
图-4
3.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:为Web服务器安装PHP扩展
1)为web1主机的PHP添加memcache扩展
[aaa@qq.com ~]# yum -y install php-pecl-memcache
[aaa@qq.com ~]# systemctl restart php-fpm
2)为web2主机的PHP添加memcache扩展
[aaa@qq.com ~]# yum -y install php-pecl-memcache
[aaa@qq.com ~]# systemctl restart php-fpm
步骤二:在后端LNMP服务器上部署Session共享
注意:这些操作在两台后端Web服务器上均需要执行,以下操作以Web1(192.168.2.100)服务器为例。
1)修改PHP-FPM配置文件,并重启服务
注意,因为后端两台web服务器(web1,web2)都需要修改配置文件(下面也web1为例)。
[aaa@qq.com ~]# vim /etc/php-fpm.d/www.conf //修改该配置文件的两个参数
//文件的最后2行
修改前效果如下:
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
//原始文件,默认定义Sessoin会话信息本地计算机(默认在/var/lib/php/session)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
修改后效果如下:
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://192.168.2.5:11211"
//定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)
//通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)
[aaa@qq.com ~]# systemctl restart php-fpm
步骤三:客户端测试
客户端使用浏览器访问两台不同的Web服务器。
操作步骤参考练习一,最终可以获得相关的Session ID信息。
推荐阅读
-
PHP实现session共享
-
Tomcat共享Session并且通过Memcached集中管理 memcachedtomcat
-
docker linux centos tomcat session 共享问题 博客分类: dockerredislinuxtomcat dockerlinuxcentostomcatsession
-
php实现双端队列
-
将10进制整数转为64进制形式的PHP实现
-
session共享多节点部署之redis 博客分类: 分布式部署 redis
-
tp5实现数据库主从同步,读写分离database.php配置文件
-
PHP基于openssl实现的非对称加密操作
-
PHP+openssl实现非对称加密
-
java共享锁实现原理及CountDownLatch解析 java