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作的文本留言本的例子(一)
Oct 09 PHP
PHP中的cookie
Nov 26 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
解决CodeIgniter伪静态失效
Jun 09 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
PHP递归调用数组值并用其执行指定函数的方法
Apr 01 PHP
php搜索文件程序分享
Oct 30 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 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/10/09 PHP
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
Python的装饰器用法学习笔记
2016/06/24 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
Python实现FM算法解析
2019/06/18 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
python编写简单端口扫描器
2019/09/04 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
读书活动总结范文
2014/04/26 职场文书
五好关工委申报材料
2014/05/31 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
观后感开头
2015/06/19 职场文书
环保守法证明
2015/06/24 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP