这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 php+redis 实现多台服务器内网存储 session 并读取示例, 小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于 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 是世界上最好的语言,呵呵……
来源: http://www.phperz.com/article/17/0808/340715.html