欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

php java session共享_PHP实现session共享

发布时间:2023/12/20 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 php java session共享_PHP实现session共享 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

确认实验环境:

proxy:

# nginx

# systemctl start memcached

# ss -ntulp | grep 80 #这个80端口是nginx

# ss -ntulp | grep 11211 #memcached

web1和web2:

# nginx

# systemctl start php-fpm

# systemctl start mariadb

# ss -ntulp | grep 80 #这个80端口是nginx

# ss -ntulp | grep 9000 #php-fpm

# ss -ntulp | grep 3306 #mariadb

/usr/local/nginx/html/有php测试页面

##############################################################################

PHP实现session共享

通过修改PHP-FPM配置文件,实现session会话共享,本案例需要在练习三的基础上实现:

配置PHP使用memcached服务器共享Session信息

客户端访问两台不同的后端Web服务器时,Session 信息一致

Nginx服务器除了承担调度器外,还需要担任memcached数据库的角色,并在两台后端LNMP服务器上实现PHP的session会话共享。

步骤

步骤一:构建memcached服务

1)安装Memcached服务(如果192.168.4.5上已经有本软件包,此步骤可以忽略)

# yum -y install memcached

2)启动服务并查看网络连接状态验证是否开启成功:

[root@proxy ~]# systemctl restart memcached

[root@proxy ~]# netstat -anptu | grep memcached

tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2839/memcached

tcp 0 0 :::11211 :::* LISTEN 2839/memcached

udp 0 0 0.0.0.0:11211 0.0.0.0:* 2839/memcached

udp 0 0 :::11211 :::* 2839/memcached

3)关闭SELinux、防火墙

[root@proxy ~]# setenforce 0

[root@proxy ~]# firewall-cmd --set-default-zone=trusted

------------------------------------------------------------------------

步骤二:在后端LNMP服务器上部署Session共享

注意:这些操作在两台后端Web服务器上均需要执行,以下操作以Web1(192.168.2.100)服务器为例。

1)为PHP添加memcache扩展

注意,因为后端两台web服务器(web1,web2)都需要连接memcached数据库,所以两台主机都需要安装PHP扩展模块(下面也web1为例)。

# yum -y install php-pecl-memcache

---------------------------------------------------------------------------

2)修改PHP-FPM配置文件,并重启服务

注意,因为后端两台web服务器(web1,web2)都需要修改配置文件(下面也web1为例)。

web1和web2:

# vim /etc/php-fpm.d/www.conf

只修改最后2行,=号后面的东西。修改该配置文件的两个参数。文件的最后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和端口)

# systemctl restart php-fpm #修改了php-fpm的配置文件之后,要记得重启服务,更新配置。

-----------------------------------------------------------------------------

客户端测试

# cd /var/lib/php/session/

[root@web1 session]# ls

sess_82eih6htk9covescqipqcl0bm2 sess_vbkvabefoge01usta9ffueq2l2

[root@web1 session]# rm -rf *

然后用谷歌浏览器访问会比较快,要先清空浏览器缓存(点击右上角3个点---历史记录--历史记录---左上角3横线---清除浏览数据

192.168.4.5/index.php

随便输入帐号和密码,进入登陆后的页面,此时浏览器地址栏会变成http://192.168.4.5/home.php,会发现只用登陆一次就能成功,并且刷新的话,还可以看到背景颜色会变,说明是2台不同的服务器提供的页面。调度成功!然后复制它显示的ID号

它的页面显示如下

Welcome : lisi #用户名

Logged In : true #状态:已登陆

Session ID: 66l1icju956elo4fve2ipmpa65 #用户ID

proxy:

# telnet 192.168.2.5 11211

登陆后页面如下:

Trying 192.168.2.5...

Connected to 192.168.2.5.

Escape character is '^]'.

get 66l1icju956elo4fve2ipmpa65 #输入内容查询数据是否存在,用get 刚才复制的ID号

搜索的结果如下:

VALUE 66l1icju956elo4fve2ipmpa65 0 78

login_user|s:2:"yy";logged_in|s:4:"true";id|s:26:"66l1icju956elo4fve2ipmpa65";

END

总结

以上是生活随笔为你收集整理的php java session共享_PHP实现session共享的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。