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&amp;MYSQL服务器配置说明
Oct 09 PHP
php&amp;java(三)
Oct 09 PHP
介绍几个array库的新函数 php
Dec 29 PHP
真正的ZIP文件操作类(php)
Jul 21 PHP
php eval函数用法总结
Oct 31 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
php检查日期函数checkdate用法实例
Mar 19 PHP
php文件操作之小型留言本实例
Jun 20 PHP
ThinkPHP中session函数详解
Sep 14 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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 不错的学习资料
2009/02/06 PHP
php 安全过滤函数代码
2011/05/07 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
python显示生日是星期几的方法
2015/05/27 Python
python生成器表达式和列表解析
2016/03/10 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
浅谈Python 递归算法指归
2019/08/22 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
华为python面试题
2016/05/03 面试题
运动会广播稿50字
2014/01/26 职场文书
五一活动标语
2014/06/30 职场文书
服务行业演讲稿
2014/09/02 职场文书
小学假期安全广播稿
2014/09/28 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
失恋33天观后感
2015/06/11 职场文书
整脏治乱工作简报
2015/07/21 职场文书
2015双创工作总结
2015/07/24 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js