php+redis实现多台服务器内网存储session并读取示例

大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于session这个问题如何处理,说实话不处理session其实也是可以的,但是在实际的情况中会出现一些让用户体验非常蛋疼的问题,比如购物下单的时候负载均衡调配服务器来回切换的过程中session丢失了,这个时候就尴尬了,用户就会郁闷我擦这什么鬼,于是乎各种担心就会出现,这破网站是不是有什么安全问题等等。下面就来说说这个问题的解决方案,配置php结合redis来存储session,假如我现在有2个(至少)服务器在做负载均衡:

1,主服务器安装php-redis 以及redis服务器端这个不多说去执行命令行yum或apt-get什么的,辅服务器只需要安装php-redis(这两个服务器必须在一个内网中不然外网访问着实不安全的)

2,来吧骚年打开的你服务器上的php.ini文件:

先看看php extension=redis.so是否开启

session.save_handler = redis session.save_path = "tcp://【redis主服务器的内网ip】:6379″ 

主和辅服务器的php-redis需要绑定一下ip(ip一致主服务器的redis-server)

redis.conf bind【redis主服务器的内网ip】

这个为了安全起见设置一个redis链接的密码:

打开 vim /etc/redis/redis.conf

requirepass 通信密码(修改这里)

ok配置好重启redis :

sudo service redis-server restart

3,测试Redis连接和验证:

redis-cli -h 【redis主服务器内网ip】

如果设置了redis链接密码,现在尝试访问数据,应该得到一个AUTH错误接下来执行下

> redis-cli redis内网ip:6397> keys *

ok了到这步的时候已经完成99%了还差一步就是各种重启额

service apache2 restart service php5-fpm restart

4,测试session是否写入redis:

<?php session_start(); $_SESSION['bieanju'] = array('name' => '别安驹', 'num' => 'http://www.bieanju.com/'); //连接redis $redis = $this->connectRedis(); // //检查session_id echo 'session_id:' . session_id() . '<br/>'; //redis存入的session(redis用session_id作为key,以string的形式存储) echo 'redis_session:' . $redis->get('PHPREDIS_SESSION:' . session_id()) . '<br/>'; echo 'php_session:' . json_encode($_SESSION['class']); print_r($_SESSION['bieanju']); ?>

速来围观,没错session写入redis了可以读取了,ok至此对于负载均衡的session也就基本解决了,剩下的就是在项目如何应用那就看你自己的业务需要。

最后在说一下php是世界上最好的语言,呵呵……

时间: 2024-09-21 10:19:31

php+redis实现多台服务器内网存储session并读取示例的相关文章

阿里云的服务器内网需要知道哪些

  内网 目前阿里云的服务器内网间是千兆共享的带宽,没有特殊限制.由于是共享网络,因此无法保证带宽速度是不变的. 如果您需要两台同地域的 ECS 实例传输数据,一般建议使用内网连接.同时,RDS.SLB.以及 OSS 相关的内网速度也都是千兆共享的环境.这些产品间也都可以使用内网相互连接使用. 目前只要是相同地域下,SLB .RDS .OSS 同 ECS 之间 都是可以直接内网互通连接使用的. 对于内网中的 ECS 实例: 只有同一账号.同一地域的实例,默认才会内网互通. 同一账号.同一区域.不

内网中多台服务器-外网访问内网中服务器

问题描述 外网访问内网中服务器 场景:内网中有多台ji主机搭载同一服务软件(tcp 端到端),对外有同一端口,同一ip地址,但 mac地址是不同的,外网有一台主机A(没有路由等缓存信息),请求服务,主机A通过 dns得到ip信息,如何等到内网一台主机的mac?正常的情况下,应该得到所有提供服务 主机的mac地址,求解答??? 解决方案 是想做负载均衡吗,那样的话,直接使用服务器软件等apavhe等它来帮你进行服务器选择,数据转发.通信等.就不需要你自己控制. 解决方案二: 为什么要得到mac?

内网服务器TCP协议层的协议种类单一么?

问题描述 内网服务器TCP协议层的协议种类单一么? RT,比如一台公司内网web服务器,对其每小时抓包能找出多少种协议?5个,10个,15个?发现其多少端口被占用?5个?10个?15个? 解决方案 这取决于你的网络环境所使用的应用等,使用的协议越多,自然端口越多. 解决方案二: 只要一个程序联网,就会默认占用至少一个端口,服务器上一般主要是应用服务,每个应用服务占用不同的端口 而协议指的是传输协议,相同的服务一般使用的协议都是一致的,但端口肯定是不一样的 比如,WEB服务器一般是80端口,你可以

【解决】VPN连接后,不能ping通内网服务器

上个周把VPN服务器搭建完毕,打算本周连接进去开始部署相关的工作. 但是今天在成功连接进入VPN后,却发现客户端无法ping通VPN内部的其他服务器.从而导致,工作无法继续. 经过排查发现,客户端可以ping通VPN服务器内网网卡的IP地址.而内网的机器是可以ping通的,甚至VPN服务器本身内网网卡的IP地址也是和内网的其他机器正常通信的. VPN服务器内网的IP地址是10.10.1.20,客户端获取到的IP地址是10.10.1.8,如下图: 刚开始还以为是由于服务器上没有做静态路由导致,于是

路由器映射 nat-请教“路由器端口映射,外网能登录到内网服务器,但是向端口9100请求书架无回应”

问题描述 请教"路由器端口映射,外网能登录到内网服务器,但是向端口9100请求书架无回应" 我是做远程监控,监控网络用的是大华视频管理平台,可以提供远程访问功能的.问题是我服务器端设置了路由器DDNS和端口映射,然后外网访问服务器的时候,可以通过9000端口认证登陆服务器的管理员账号.但无法访问RTSP服务(服务器修改了RTSP端口为9100) 有个问题,我通过IP抓包工具分析了视频访问客户端在打开实时预览录像的时候,数据包的目标IP竟然是 视频服务器的内网IP地址(我设置服务器内网I

http协议-关于MFC中访问内网的HTTP问题

问题描述 关于MFC中访问内网的HTTP问题 别人发我的文档上面是这样写的: 发布平台提供形如以下格式http servelet接口: http://ip:port/context/alarm.tfc?method=sendAlarm&yjxh=&yjsj=&ywlb=&bklx=&bkzlx=&gcxh=&kkbh=&kkmc=&fxlx=&hpzl=&hphm=&gcsj=; 我查了下servelet是ja

内网建Web服务器的安全问题

很多公司或企业将其Web服务器放在内网,并在防火墙上做映射,将来自80端口的请求转向一台内网Web服务器的Web端口. 这样做安全性是提高了不少,但并不代表将Web服务器隐藏在内网就一定安全了,因为Web服务器本身还是存在很多问题的,特别是一些CG,程序,往往这是人们最容易忽视的地方.下面就以一台开放80端口的Web服务器为例,来测试其存在的安全隐患问题,并且对存在问题做测试描述,指出问题的症结所在并给出防范错施. 这是某大学的娱乐休闲网站,进去看了看,页面做得不错,先看一看是什么Web服务器吧

学校内网 网站需要租用服务器吗

问题描述 学校想建立一个办公系统,只有学校内部人员才可以访问,小女子有几个问题想请教一下大家.第一:建立学校办公系统,需要租用服务器吗?可以用自己的电脑作为服务器吗,因为就是在我电脑上开发的办公系统,tomcat服务器也在我的电脑上.第二:可以锁定学校网站为浏览器主页吗?这样安全吗?第三:如何禁止外网访问学校办公系统?谢谢您的回答 解决方案 第一:只做内网用可以不租用服务器的,内部架设办公系统更能排除外网的一下访问,但不能用你自己电脑 要准备一台专门的第二:锁定哪个网页为系统主页网站没被挂木马的

云端 实时监控-外网实时监控内网建设的IIS服务器

问题描述 外网实时监控内网建设的IIS服务器 公司现在用IIS部署了好几台web服务器,希望能够在外网实时监控这些服务器的运行情况,若出现冗机,能够用邮件或者短信通知. 之前用Cactiez等软件做过内网实时监控内网的交换机和服务器, 现在想在云服务器上部署一个软件,用来实时监控企业内部的服务器. 找了好多软件,都没有合适的,有没有更好的软介绍?