通过修改PHP-FPM配置文件,实现session会话共享:

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

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

环境:

- 部署LNMP+memcached网站平台, 参考之前的随笔,这里不做介绍

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

拓扑图:

一, 在后端的两台LNMP服务器上部署Session共享, 以 web1为例(web也需做如下相同操作)

1.为PHP添加memcache扩展

[root@web1 ~]# yum -y install php-pecl-memcache     #两台web服务器都要安装

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

[root@web1 ~]# 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  #定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)

php_value[session.save_path] = "tcp://192.168.2.5:11211"   #通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)

[root@web1 ~]# systemctl restart php-fpm

二, 客户端使用浏览器访问web1和web2,验证Session是否一致

1.  部署 web1 的测试页面

[root@web1 ~]# tar -xf php-memcached-demo.tar.gz    #找一个php的测试页面

[root@web1 php_scripts]# cd php-memcached-demo

[root@web1 php-memcached-demo]# ls
     home.php  images  index.php  login.php  README.md  style.css

[root@web1 php-memcached-demo]# cp -r * /usr/local/nginx/html/      #拷贝php页面到Nginx的网页目录下

[root@web1 php-memcached-demo]# vim home.php

<body bgcolor=blue>    #定义home.php的页面颜色为blue, 以便于区分后端两台不同的web服务器

[root@web1 php-memcached-demo]# vim index.php

<body bgcolor=red>    #定义index.php的页面颜色为red,以便于区分后端两台不同的web服务器

2. 部署 web2 的测试页面

[root@web2 ~]# tar -xf php-memcached-demo.tar.gz    #找一个php的测试页面

[root@web2 php_scripts]# cd php-memcached-demo

[root@web2 php-memcached-demo]# ls
    home.php  images  index.php  login.php  README.md  style.css

[root@web2 php-memcached-demo]# cp -r * /usr/local/nginx/html/      #拷贝php页面到Nginx的网页目录下

[root@web2 php-memcached-demo]# vim home.php

<body bgcolor=blue>    #定义home.php的页面颜色为blue, 以便于区分后端两台不同的web服务器

[root@web2 php-memcached-demo]# vim index.php

<body bgcolor=red>    #定义index.php的页面颜色为red,以便于区分后端两台不同的web服务器

3. 浏览器访问后端服务器web1和web2 的测试页面

[root@web1 ~]# firefox http://192.168.2.100       #在web1网站上注册用户,密码

[root@web1 ~]# cd /var/lib/php/session/

[root@web1 ~]# ls     #查看服务器本地生成的Session信息

sess_qqek1tmel07br8f63d6v9ch401

[root@web2 ~]# firefox http://192.168.2.200       #在web2网站上注册用户,密码

[root@web2 ~]# cd /var/lib/php/session/

[root@web2 ~]# ls     #查看服务器本地生成的Session信息

sess_qqek1tmel07br8f63d6v9ch401

4. 总结

可以看到, 客户端访问两台不同的后端Web服务器时,Session 信息一致,实现共享.

结束.

PHP实现session共享的更多相关文章

  1. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  2. 分布式中使用Redis实现Session共享(二)

    上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见的session开始,刚好也重新学习一遍session的实现原理.在阅读之前假设你已经会使用nginx+i ...

  3. windows 环境下nginx + tomcat群 + redis 实现session共享

    nginx作为负载均衡根据定义将不同的用户请求分发到不同的服务器,同时也解决了因单点部署服务器故障导致的整个应用不能访问的问题 在加入nginx之后,如果多个服务器中的一个或多个(不是全部)发生故障, ...

  4. shiro实现session共享

    session共享:在多应用系统中,如果使用了负载均衡,用户的请求会被分发到不同的应用中,A应用中的session数据在B应用中是获取不到的,就会带来共享的问题. 假设:用户第一次访问,连接的A服务器 ...

  5. Redis安装及实现session共享

    一.Redis介绍 1.redis是key-value的存储系统,属于非关系型数据库 2.特点:支持数据持久化,可以让数据在内存中保存到磁盘里(memcached:数据存在内存里,如果服务重启,数据会 ...

  6. Tomcat7基于Redis的Session共享实战二

    目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户每一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无 ...

  7. Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

    Nginx+Tomcat+Redis实现负载均衡.资源分离.session共享 CentOS安装Nginx http://centoscn.com/CentosServer/www/2013/0910 ...

  8. IIS下Asp.Net应用程序多进程设置及Session共享

    背景: 目前项目中在单个进程的应用程序经常会遇到w3c.exe崩溃的情况,于是就设想是否可以通过IIS多进程的方案来避免出现该问题. 于是搜了下“怎么实现多进程的方案”,找到了这篇文章:http:// ...

  9. 集群间Session共享问题解决方案

    两个基本概念的生命周期 session: 当新客户端发现一个HTTP请求时服务端会创建一个session.并分配一个sessionID作为服务端来客户端的识别,session对象会保存在服务端.此时s ...

  10. CAS 集群部署session共享配置

    背景 前段时间,项目计划搞独立的登录鉴权中心,由于单独开发一套稳定的登录.鉴权代码,工作量大,最终的方案是对开源鉴权中心CAS(Central Authentication Service)作适配修改 ...

随机推荐

  1. 【PowerOJ1741&网络流24题】最长递增子序列问题(最大流)

    题意: 思路: [问题分析] 第一问时LIS,动态规划求解,第二问和第三问用网络最大流解决. [建模方法] 首先动态规划求出F[i],表示以第i位为开头的最长上升序列的长度,求出最长上升序列长度K. ...

  2. [BZOJ4205][FJ2015集训]卡牌配对

    题目:卡牌配对 传送门:None 题目大意:有$n_1$张$X$类牌和$n_2$张$Y$类类牌,每张卡牌上有三个属性值:$A,B,C$.两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属 ...

  3. [CERC2016]:凸轮廓线Convex Contour(模拟+数学)

    题目描述 一些几何图形整齐地在一个网格图上从左往右排成一列.它们占据了连续的一段横行,每个位置恰好一个几何图形.每个图形是以下的三种之一:$1.$一个恰好充满单个格子的正方形.$2.$一个内切于单个格 ...

  4. vue中动态加载图片路径的方法

    assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src=”./logo.png”>和background:url(./logo.p ...

  5. netflow-module

    https://www.elastic.co/guide/en/logstash/current/netflow-module.html

  6. 织梦dedecms发布视频文章前台变成一张图片的解决方法

    在发布文章的时候,有时需要插入视频的代码,如优酷.腾讯等视频,这样更能让文章变的丰富,但是在发布视频的时候,前台并不能播放视频,而是一张图片 解决这个方法其实很简单,在发布视频文章的时候,将附加选项的 ...

  7. 软件-工具:Beyond Compare

    ylbtech-软件-工具:Beyond Compare 1.返回顶部 1. Beyond Compare是一套由Scooter Software推出的文件比较工具.主要用途是对比两个文件夹或者文件, ...

  8. 20160520—JS打分控件

    效果预览: 可实现功能:鼠标在滑动条内左右滑动,文本框内分数变动:文本框输入数字,滑动条长度自动改变. JavaScript代码: $(function () { scoreFun($("# ...

  9. Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数

    Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数 绑定表达式中可以有简单的运算和字符串连接, 但字符串需放在双引号 ...

  10. seaborn

    Seaborn是基于matplotlib的Python数据可视化库. 它提供了一个高级界面,用于绘制引人入胜且内容丰富的统计图形. 一  风格及调色盘 风格 1 sns.set()  模式格式 2 s ...