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 相关文章推荐
PHP的面向对象编程
Oct 09 PHP
Zend Studio 无法启动的问题解决方法
Dec 04 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
PHP类的特性实例分析
Sep 28 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
PHP7新增函数
Mar 09 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提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
javascript 闭包详解
2015/07/02 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
基于python实现简单日历
2018/07/28 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
证婚人经典证婚词
2014/01/09 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
电影复兴之路观后感
2015/06/02 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书