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遍历二维数组的代码
Apr 22 PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
php简单日历函数
Oct 28 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
PHP文件上传处理案例分析
Oct 15 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 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笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
php批量删除操作代码分享
2017/02/26 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
用python删除java文件头上版权信息的方法
2014/07/31 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
Java的基础面试题附答案
2016/01/10 面试题
编辑个人求职信范文
2013/09/21 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
单位人事专员介绍信
2014/01/11 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
联片教研活动总结
2014/07/01 职场文书
教师个人教学总结
2015/02/11 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
SQL注入详解及防范方法
2021/12/06 MySQL
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis