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 25 PHP
php 文章调用类代码
Aug 11 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
关于尾递归的使用详解
May 02 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
Jun 24 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 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 Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
超清晰的document对象详解
2007/02/27 Javascript
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
Python实现Kmeans聚类算法
2020/06/10 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
基于opencv实现简单画板功能
2020/08/02 Python
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
毕业生怎样写好自荐信
2013/11/11 职场文书
军神教学反思
2014/02/04 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
解除财产保全担保书
2014/05/20 职场文书
教育见习报告范文
2014/11/03 职场文书
市场营销计划书
2015/01/17 职场文书
活动总结书怎么写
2015/05/11 职场文书
出生证明范本
2015/06/15 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js