文档章节

Nginx+Redis实现反向代理和Session共享(二)

ali安东尼
 ali安东尼
发布于 2017/07/06 15:52
字数 532
阅读 24
收藏 0

###Session在PHP默认存放形式

1.PHP处理Session默认是创建会话数据文件,以文件的形式存储会话信息;

2.通过查看<?php echo phpinfo();得知,Session的存放路径:session.save_path = /var/lib/php/session

###文件形式存放Session的劣势:

1.如果用户数量非常大,文件操作的I/O开销就会很大,会严重影响系统的执行效率。

2.如果多个系统直通之间需要共享session数据,而且系统之间是在不同的服务器上的,那文件存放方式就不可以实现这样的需求了。

###Session的其他存放形式

1.Session可以用数据库、NFS或SAMBA、Redis、memcached进行session的存放。
2.当然最优的方式还是使用Nosql中的Redis或者memcached这种键值(Key-Value)存储数据库存放最合适不过了。

###Redis存放Session

PHP默认就支持保存session到redis,不需任何额外代码。

修改php配置,总共有3种方法,如下选择其中一种即可:

修改php.ini

a. 打开 php.ini 文件,设置下面两个值:
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
b. 如果Redis有密码,用下面的配置:
session.save_path = "tcp://127.0.0.1:6379?auth=password"
c. 配置完成后,重启PHP服务

配置完成后,重启PHP-FPM (以PHP-FPM形式启动)

a. PHP-FPM的配置文件/etc/php-fpm.conf或者/etc/php-fpm.d/*.conf中,也有session的配置。
	而且它们的session配置优先级比php.ini高,会覆盖php.ini中的配置。所以,也直接在这里面改:  
	php_value[session.save_handler] = redis
	php_value[session.save_path] = "tcp://127.0.0.1:6379"
c. 如果用php.ini的配置,则需要把这两行用;注释掉。避免出现优先级问题
d. 然后重启PHP-FPM。

代码添加方式

ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://127.0.0.1:6379');

###案例测试

1.下面案例是使用代码添加方式在Redis存放SESSION。

2.文件说明:

login.php是登录页面。任何操作必须先登录。

session.php主要是打印session数据,登录之后才可以看到的。

login.php

session.php

由睿江云提供,想了解更多,请登陆www.eflycloud.com

© 著作权归作者所有

共有 人打赏支持
ali安东尼
粉丝 3
博文 192
码字总数 173101
作品 0
广州
Nginx--Session共享问题

在Nginx做反向代理时,面对集群,如何保证Session的一致性。 第一种是以负载均衡服务器本身提供的session共享策略,每种服务期的配置是不一样的并且nginx本身是没有的。 第二种是利用web容器...

btwangzhi
2017/11/26
0
0
tomcat的session问题

记录客户端操作我们一般使用cookie进行客户身份识别,session存储客户端的信息,session保存在服务器端。当我们负载均衡服务后,客户端请求定位到另外一台服务器,session信息在另外一台服务...

Ailu0li
2017/02/11
0
0
nginx负载均衡实现tomcat集群方案简要小结

重点两部分:一、负载均衡二、tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问。 nginx是一个常...

天下杰论
2015/03/11
0
1
基于Tomcat集群的会话保持

一、为什么要实现会话保持 因为http协议是一种无状态的协议,客户端和服务器建立连接在完成数据传输之后即断开连接,当客户端再次请求建立连接的时候,服务器并不知道两次连接之间有什么联系...

ZMelissa
06/28
0
0
了解:Apache+Tomcat实现负载均衡

反向代理负载均衡 (Apache2+Tomcat7/8) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的。这种代理方式...

凡尘里的一根葱
2015/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Maven 项目中依赖的搜索顺序

ettings_mirror 的优先级高于 central settings_profile_repo 优先级高于 settings_mirror settings_profile_repo 优先级高于 pom_repositories settings_profile_repo 优先级高于 pom_prof......

xingyu4j
8分钟前
1
0
改变maven项目的名称

pom.xml <groupId>com.soft.xxx</groupId><artifactId>xxx</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>xxx Maven Webapp</name><build>......

1713716445
10分钟前
2
0
windows下按照RabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平...

zhaochaochao
10分钟前
2
0
10个PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的10个开源的Php比特币项目,将有助于你了解在自己的应用中如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方法...

笔阁
17分钟前
10
0
MyBatis级联探讨

数据模型 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper name......

职业搬砖20年
21分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部