Redis保存PHP Session的方法

藏色散人
发布: 2019-01-09 13:55:24
转载
3796人浏览过

 

PHP默认就支持保存session到redis,不需任何额外代码。

Redis保存session用的命令是setex,用redis-cli monitor实时监测可以检测到。

setex命令的语法:

setex(key, time, value)
登录后复制

其中,key是键值,time是过期时间,value是字符串类型的值。

立即学习PHP免费学习笔记(深入)”;

具体步骤如下。

1、环境

要用Redis保存session,首先必须要满足下面的条件:

必须有一台安装了Redis服务器。本例用本地服务器Redis,IP为:127.0.0.1,端口:6379。

PHP安装了phpredis扩展,通过phpinfo()能够看到扩展,如下图。

phpredis.jpg

PHP能正常访问Redis。测试代码如下,

<?php
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    $count = $redis->exists('count') ? $redis->get('count') : 1;
    echo $count;
    $redis->set('count', ++$count);
登录后复制

刷新页面,如果看到数字不断增加,说明Redis环境正常。

2、配置PHP

安装了Redis扩展后,phpinfo()输出中会看到session的支持句柄,其中包含了redis,如下:

session_redis.png

有一点要注意的是,Redis的过期时间最大值为2147483647,也就是十六进制的7fffffff。

所以,session配置中回收时间session.gc_maxlifetime的值不能超过这个数字。

否则Redis用setex命令保存session时,过期时间time为负数,相当于直接删除了这个key。

这样不仅不会保存成功,PHP还会返回下面的错误:

Warning: Unknown: Failed to write session data (redis). Please verify that the current setting of session.save_path is correct (127.0.0.1:6379) in Unknown on line 0
登录后复制

接着,修改php配置,总共有3种方法,如下选择其中一种即可:

2.1 修改php.ini

打开 php.ini 文件,设置下面两个值:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
登录后复制

如果Redis有密码,用下面的配置:

session.save_path = "tcp://127.0.0.1:6379?auth=password"
登录后复制

配置完成后,重启PHP-FPM。

2.2 修改php-fpm.conf

PHP-FPM的配置文件/etc/php-fpm.conf或者/etc/php-fpm.d/*.conf中,也有session的配置。

它们的session配置优先级比php.ini高,会覆盖php.ini中的配置。

所以,也直接在这里面改:

php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://127.0.0.1:6379"
登录后复制

如果用php.ini的配置,则需要把这两行用;注释掉。

然后重启PHP-FPM

2.3 PHP代码

也可以在运行的PHP代码中配置session,如下。

ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://127.0.0.1:6379');
登录后复制

3、测试

写一段PHP测试代码,如下:

session_start();
$count = isset($_SESSION['count']) ? $_SESSION['count'] : 1;
echo $count;
$_SESSION['count'] = ++$count;
登录后复制

如果刷新页面看到数字不断增加,说明配置Redis保存session成功。

php中文网学习专题:php session (包含图文、视频、案例)

以上就是Redis保存PHP Session的方法的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:歪麦博客网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号