性能优化

linux系统中配置session使用redis 分享链接 /book/zentaopms/624.html?releaseID=17

作者:柳婷婷 最后编辑:刚哥 于 2024-12-19 14:07:32 浏览量:20977
摘要:PHP默认session是以文件形式保存在本地文件系统中,每次访问都是做io操作,并发大的时候,必然会导致session文件爆发,导致读取文件变慢。 换一种方式,将session保存到内存或者数据库,性能会提高。


#查看php是否安装redis扩展
php -m | grep redis
#查看是否安装redis服务
systemctl status redis
#查看php版本(演示系统中php版本为7.2)
php -v

一、centos8系统中php配置session使用redis

1、安装redis

dnf install redis -y
systemctl start redis #启动 
vim /etc/redis.conf
bind 127.0.0.1 #默认只允许本机访问,如果需要开放外网,则注释掉这行
protected-mode yes #保护模式,如果需要开放外网,则改为 no
port 6379 #可修改端口
requirepass password #登录密码,改配置默认是注释的,放开之后在登录时需要使用如下方式登录
redis-cli -p 6379
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth password
OK
127.0.0.1:6379> ping
PONG

2、php安装配置redis扩展

dnf install php-redis -y
# 未安装fpm,编辑apache的php配置
vim /etc/httpd/conf.d/php.conf
# 编辑PHP配置文件
vim /etc/php-fpm.d/www.conf
# 修改以下配置:
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
#重启apache 
systemctl restart httpd
#重启php-fpm 
systemctl restart php-fpm.service

3、常用命令

systemctl stop redis #停止
systemctl status redis #查看 redis 状态

二、ubuntu系统中php配置session使用redis

sudo apt-get update
sudo apt-get install redis-server
sudo apt-get install php-redis -y 
vim /etc/php/7.2/fpm/php.ini
session.save_handler = files
#改为(redis):
session.save_handler = redis
#添加:
session.save_path = "tcp://127.0.0.1:6379"
#重启fpm
systemctl restart php7.2-fpm

三、完成配置后,打开dubug,登录禅道进行测试

#进入禅道安装目录
vim config/my.php
#修改:
$config->debug=true; 
#进入禅道登录后;进入log目录,查看php开头的最新日志文件。登录正常就可以把上面debug改回false
cd tmp/log 

注:如果配置文件 /etc/redis.conf 里设置了连接密码 requirepass,保存session的时候会报错,save_path 这样写 tcp://127.0.0.1:6379?auth=authpwd 即可。

评论列表
🚖
爱玩的牛肉面 2024-10-24 11:21:11 回复
最新的zentao中内置了redis插件,但是php -m看的时候没有加载redis插件,如何开启redis插件?
回复
php-redis 是php的扩展,是内置在最新的一键运行环境中的。历史版本升级,一键环境还是沿用老的,不会增加php-redis 扩展的。
可以将旧的一键安装环境停用,使用新的环境(将老的服务暂停,老的禅道对应的文件夹重命名,下载新的环境,将老环境的数据导入到新的环境中)。
如果是直接部署的环境,需要手动安装php-redis 扩展。

有禅道使用问题,也可以联系客户经理,邀请您加入技术交流群沟通,即时性会更好一些。
🚕
禅道4785 2024-04-07 13:39:11 回复
配置session使用redis时如何配置redis集群?
回复
redis集群没有测试过,理论可以配置session.save_path地址就可以。
session.save_handler = redis
session.save_path = "tcp://a.b.c.d:6379"
回复
我这么配置是报错的:save_path = "tcp://a.b.c.d:6379?auth=psd,tcp://a.b.c.d:6379?auth=psd,tcp://a.b.c.d:6379?auth=psd",多个主从是怎么配置的呢?
回复
php配置文件应该支持这种形式:
session.save_handler = redis
session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2&read_timeout=2.5"
具体的redis主从,需要自己配置下了哦。
回复
另外,具体的报错是什么呢?
回复
我只配置了密码没有配置权重和超时,报错信息如下:Uncaught RedisException: MOVED 6395 host:端口 in /var/www/html/zentaopms/framework/base/router.class.php:1114
Stack trace:
#0 /var/www/html/zentaopms/framework/base/router.class.php(1114): session_start()
#1 /var/www/html/zentaopms/framework/base/router.class.php(430): baseRouter->startSession()
#2 /var/www/html/zentaopms/framework/base/router.class.php(462): baseRouter->__construct('pms', '/var/www/html/z...')
#3 /var/www/html/zentaopms/www/index.php(35): baseRouter::createApp('pms', '/var/www/html/z...', 'router')
#4 {main}
thrown in /var/www/html/zentaopms/framework/base/router.class.php on line 1114 when visiting
回复
https://segmentfault.com/a/1190000019634892
可以参考下这篇手册的 c.被动Session.handler方式 试试呢。
静心养性 2022-03-16 17:22:53 回复
想把主菜单中的“项目”2字才成“开发迭代”,变量$lang->projectCommon在哪里修改呢?
回复
您好,可以看下module/common/lang/zn-ch的语言定义文件
Sophia 2022-02-23 09:38:29 回复
服务器上用账号密码登录禅道,一直登录不上,用户名或密码错误
回复
您好,可以先确认下session路径是否有对应的文件创建?
zentaoer 2021-12-07 13:01:49 回复
请问哪个版本可以用这个功能?
回复
开源版本和收费版本都支持的。
回复
开源版不支持,设置后无效
回复
需要自己搭建的php环境才可以的,如果是一键安装包部署的,目前不可以。一键安装包没有集成php-redis扩展。
回复
请问一键安装包自己怎么集成php-redis拓展呢
回复
您好,一键安装包不支持安装扩展,您可以搭建运行环境源码部署。
可以参考 https://www.zentao.net/book/zentaopmshelp/342.html
https://www.zentao.net/book/zentaopmshelp/101.html
2021-11-29 09:50:56 回复
Windows下能否进行此配置?
我们现在禅道访问量大了就出现大量io,速度很受影响。
回复
您好,Session的配置是需要通过Redis服务来进行的,同时Redis服务的部署是支持Windows操作系统,这块的话,目前我们还没有针对禅道进行Redis共享Session的手册,非常抱歉。另外,关于Redis服务的安装和配置,网上都有比较成熟的方案,可以参考设置一下:)
杨苗
高级客户经理
13165050229
2692096539
统一服务热线 4006-8899-23
我要提问提问有任何问题,您都可以在这里提问。 问题反馈反馈点击这里,让我们聆听您的建议与反馈。