相信很多人用过redis存放session,可能有些人还不是很清楚,这里说一下如何配置php的session存放在redis里面?然后如何测试出效果?
具体环境:
一台apache+php的服务器(yum安装remi源及配置 httpd-2.2.15 php-5.4.45)
一台redis服务器(yum安装remi源及配置 redis-3.2.6)
保证apache服务器可以访问redis服务器的6379端口
具体步骤:
1、在apache+php服务器上安装redis扩展
-
yum install php-pecl-redis
2、测试php是否安装扩展成功
more index.php
浏览器访问如下:
如上图说明安装成功,这里版本号和redis本身的版本号不同,大家可以忽略。
3、然后修改php.conf文件,可能很多人会疑问不是修改php.ini文件吗?一会下面我会说。
-
more /etc/httpd/conf.d/php.conf
将如下两行:
-
php_value session.save_handler "files"
-
php_value session.save_path "/var/lib/php/session"
修改为如下内容
-
php_value session.save_handler "redis"
-
php_value session.save_path "tcp://192.168.9.131:6379"
这里有一些文章里面加了tcp,有的没有加,本人测试过加或者不加session都可以存放在redis里面。
我个人理解的意思是:加了tcp表示tcp协议,如果没有加则表示通过http协议。如果不对请勿喷~~
保存退出后重新启动httpd服务
4、写一个测试页面test.php,内容如下:
-
-
header("Content-type:text/html;charset=utf-8");
-
session_start();//这个很重要
-
-
$_SESSION['test_session']= @array('name' =>'fanqie' , 'ccc'=>'hello redis ');
-
-
$redis = new redis();
-
$redis->connect('192.168.9.131', 6379);
-
echo 'sessionid>>>>>>> PHPREDIS_SESSION:' . session_id();
-
echo '
';
-
echo '
';
-
//redis用session_id作为key并且是以string的形式存储
-
echo '通过php用redis获取>>>>>>>'.$redis->get('PHPREDIS_SESSION:' . session_id());
-
echo '
';
-
echo '
';
-
echo '通过php用session获取>>>>>>>
';
-
echo '
';
-
var_dump($_SESSION['test_session']);
-
echo '';
5、测试,通过浏览器访问
在redis里面查看是否有这个session
redis中的session值和浏览器访问的值一样,说明成功。
这里我说一下为什么我直接修改的php.conf文件,而不是php.ini文件
如果你两个都配置了,它们的优先级比较高的是php.conf文件。所以说如果你想配置php.ini文件,你还需要注释掉php.conf中默认存本地的方式。这样更复杂繁琐。相信大家会选择上面比较简单的方式。
阅读(3933) | 评论(1) | 转发(0) |