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 字符串替换的方法
Jan 10 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
浅谈php调用python文件
Mar 29 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
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中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
8个必备的PHP功能开发
2015/10/02 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
script的async属性以非阻塞的模式加载脚本
2013/01/15 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
js对象基础实例分析
2015/01/13 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
javascript中new关键字详解
2015/12/14 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
python读取中文txt文本的方法
2018/04/12 Python
Python实战购物车项目的实现参考
2019/02/20 Python
pytorch 常用线性函数详解
2020/01/15 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
PHP面试题附答案
2015/11/28 面试题
竞选演讲稿范文
2013/12/28 职场文书
学校春季防火方案
2014/06/08 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
小学科学教学计划
2015/01/21 职场文书
岳庙导游词
2015/02/04 职场文书
学校标语口号大全
2015/12/26 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS