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 相关文章推荐
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
php的ajax简单实例
Feb 27 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
php实现webservice实例
Nov 06 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
php判断用户是否手机访问代码
Jun 08 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 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(7) php 字符串相关应用
2010/03/05 PHP
php缓存技术详细总结
2013/08/07 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Jupyter加载文件的实现方法
2020/04/14 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
PHP两种查询函数array/row的区别
2013/06/03 面试题
全陪导游欢迎词
2014/01/17 职场文书
法定代表人授权委托书
2014/09/19 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
2014年终个人工作总结
2014/11/07 职场文书
先进工作者申报材料
2014/12/23 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫