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自动给文章加关键词链接的函数代码
Nov 29 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
php多文件上传实现代码
Feb 20 PHP
discuz目录文件资料汇总
Dec 30 PHP
PHP中的socket_read和socket_recv区别详解
Feb 09 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
php实现表单多按钮提交action的处理方法
Oct 24 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
一段实用的php验证码函数
May 19 PHP
CI框架中类的自动加载问题分析
Nov 21 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 Mysql编程之高级技巧
2008/08/27 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
浅谈php扩展imagick
2014/06/02 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
php返回json数据函数实例
2014/10/09 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
js中url对象化管理分析
2017/12/29 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
跟老齐学Python之编写类之二方法
2014/10/11 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
学python最电脑配置有要求么
2020/07/05 Python
写给女朋友的检讨书
2014/01/28 职场文书
质量承诺书格式
2014/05/20 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
校长一岗双责责任书
2015/05/09 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js