全部 android asp.net C/C++ cshap IOS Java javascript nodejs perl php python ruby web容器 其他 前端 数据库 第三方平台 混合式APP 网络 系统 默认分类

php+redis实现多台服务器内网存储session并读取

0 72

大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于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】″ 

这个为了安全起见设置一个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是世界上最好的语言,呵呵……

热忱回答0

  • 加入年费大会员(20每年)
  • 热门标签

    猜你喜欢

    1. php引入文件(include 和require的区别)
    2. php魔术方法使用场景
    3. PhpStorm和WAMP配置调试参数,问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration.
    4. 做自己的PHP语法解释器
    5. 微信支付之扫码支付(PHP)
    6. php in_array语法
    7. PHP静态成员变量
    8. Docker笔记二:Lumen &amp; Redis
    9. php中的常用数组函数(八) 排序函数汇总(sort、rsort、usort、asort、uasort、arsort、ksort、uksort、krsort、natsort、natcasesort、array_multisort)
    10. php多版本管理phpenv

    衣食父母

    最近热帖

    1. 走进JavaScript——重拾对象 6
    2. 最近用django做了个在线数据分析小网站 6
    3. mysql之 mysqldump 备份恢复详解 7
    4. 深入理解Java常用类-----时间日期 7
    5. css重构之旅 8
    6. 分布式队列ZooKeeper的实现 6
    7. Java-面向对象总结 7
    8. 《HelloGitHub》第 14 期 8
    9. 压缩&#39;语料库,即提取特征词或词频,做量化处理之后以“列向量”形式保存到数据库 8
    10. 【charger battery 充電 充電器 電池】過充保護警告訊息 over charging protection,Battery over voltage protection, warning message 7

    随机文章

    1. 异步复位同步释放兼谈同步数字电路实质
    2. 深度学习笔记 (二) 在TensorFlow上训练一个多层卷积神经网络
    3. 超小Web手势库AlloyFinger原理
    4. C#实现拍照并且存水印照片
    5. 移动端的性能陷阱和加速