通过修改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. Mybatis, 实现一对多

    我这里是拿商品做为例子 不多说直接上代码 Mapper.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  2. GPG(pgp)加解密中文完整教程

    一.介绍 我们都知道,互联网是不安全的,但其上所使用的大部分应用,如Web.Email等一般都只提供明文传输方式(用https.smtps等例外).所以,当我们需要传输重要文件时,应该对当中的信息加密 ...

  3. hibernate class cast exception from object to ...

    http://stackoverflow.com/questions/22548325/java-lang-classcastexception-cannot-be-cast-to-java-lang ...

  4. 《SQL Server 2012 T-SQL基础》读书笔记 - 1.背景

    几个缩写的全称:Data Definition Language (DDL), Data Manipulation Language (DML), and Data Control Language ...

  5. Junit单元测试的使用

    这里拿Dynamic Web Project项目来演示,首先创建一个Dynamic Web Project项目,起名,点next, 继续点next, 将web.xml文件勾选,finish, 接下来在 ...

  6. JDK+Tomcat+Eclipse环境搭建过程记录

    这学期选了一门公选课叫网络开发工具与技术,主要学习用JSP语言构建网站.在配置环境的过程中遇到不少的坑,于是记录下来,希望能帮到大家. 系统环境:Win10 JDK版本:8u121, JAVA版本1. ...

  7. PAT 1001 A+B Format (20 point(s))

    题目: 我一开始的思路是: 用math.h中的log10函数来计算位数(不建议这么做,因为会很慢,而且会出一点别的问题): 用pow函数根据要插入分号的位置来拆分a+b成一个个数字(例如res / p ...

  8. LeetCode——160 Intersection of Two Linked Lists

    题目 Input: intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 Output: ...

  9. VS2012发布Web应用程序

    一.右键项目-->发布 二.配置文件:新建-->配置文件名称,如MyProject 三.连接:1.发布方法:文件系统  2.目标位置:自己在本地建立一个文件夹 3.目标URL:可以不填 四 ...

  10. SQL server 2008r2 file is corrupt

    下载的SQLManagement studio有问题,重新下载一遍后再安装就好了.安装顺序没问题. 在卸载SQL Server开始——运行:输入regedit 进入注册表编辑器,进入之后执行下列操作: ...