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分页思路以及在ZF中的使用
May 30 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
php抽象类使用要点与注意事项分析
Feb 09 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
使用PHP+MySql实现微信投票功能实例代码
Sep 29 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 16 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
基于python实现把图片转换成素描
2019/11/13 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
Python用户自定义异常的实现
2020/12/25 Python
Python 里最强的地图绘制神器
2021/03/01 Python
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
新闻专业个人求职信
2013/12/19 职场文书
中学生期末评语
2014/02/03 职场文书
黄金搭档广告词
2014/03/21 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
员工工作能力评语
2014/12/31 职场文书
毕业生个人自荐书
2015/03/05 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
python神经网络ResNet50模型
2022/05/06 Python
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL