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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
php 字符串函数收集
Mar 29 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
一致性哈希算法以及其PHP实现详细解析
Aug 24 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
Zend Framework创建自己的动作助手详解
Mar 05 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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中的字符串函数
2006/11/24 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
平面设计岗位职责
2013/12/14 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
房屋公证委托书
2014/04/03 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
银行实习推荐信
2015/03/27 职场文书
培训讲师开场白
2015/06/01 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
详解php中流行的rpc框架
2021/05/29 PHP
代码复现python目标检测yolo3详解预测
2022/05/06 Python
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python
MySQL深分页问题解决思路
2022/12/24 MySQL