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


Posted in PHP onJanuary 12, 2017

大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于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是世界上最好的语言,呵呵……

PHP 相关文章推荐
使用eAccelerator加密PHP程序
Oct 03 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
Mar 11 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
php中JSON的使用方法
Apr 30 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
实例解析php的数据类型
Oct 24 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 #PHP
YII2 实现多语言配置的方法分享
Jan 11 #PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 #PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 #PHP
php实现36进制与10进制转换功能示例
Jan 10 #PHP
php获取当前url地址的方法小结
Jan 10 #PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 #PHP
You might like
php中用foreach来操作数组的代码
2011/07/17 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
[原创]图片分页查看
2006/08/28 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
Python pass 语句使用示例
2014/03/11 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
大学开学计划书
2014/04/30 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
MySQL sql_mode的使用详解
2021/05/08 MySQL
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android