redis db切换错误
在cogfig/redis里面配置了 多个redis 链接
.env 文件
业务中使用 配置的单独的 pixel 配置
期待结果 :
数据能写到 pixel 链接配置的 11号数据库
实际结果:
数据写到了 default 链接配置的 0 号数据库
正常的启动:
php start.php start -d
数据写入正确;
bug复现的步骤
1、webman 所在服务器 直接重启
2、被 服务器配置的 crontab shell 脚本自动拉起
3、数据写入错误
4、执行 php start.php reload 后 问题解决、 数据写入正确
这是 shell 脚本
系统环境等信息:
调试看看通过shell启动时配置里读取的DB是哪个
现在通过shell 启动 db读取正确
就很奇怪、 如果说是 配置没读取正确的话 应该所有的都不正确才对、 但是host 又读取对了 能正确链接到redis 服务器、 就是db 错误
vlucas/phpdotenv 这个库在PHP TS版本(线程安全版本)可能会有bug,请使用NTS版本(非线程安全版本)。
当前php是什么版本可以通过执行 php -v 查看。
如果php线程版本没问题,尝试打印下
config('redis');
看下配置是否正确。感谢老大的回复:
php 版本如下:
PHP 7.3.31 (cli) (built: Sep 25 2021 15:44:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.31, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.31, Copyright (c) 1999-2018, by Zend Technologies
现在使用 config('redis') 打印结果是正常的:
array:4 [
"default" => array:4 [
"host" => "r-xxxxx.redis.rds.aliyuncs.com"
"password" => ""
"port" => "6379"
"database" => "0"
]
"pixel" => array:4 [
"host" => "r-xxxx.redis.rds.aliyuncs.com"
"password" => ""
"port" => "6379"
"database" => "11"
]
"java-redis" => array:4 [
"host" => "r-xxxx.redis.rds.aliyuncs.com"
"password" => ""
"port" => "6379"
"database" => "5"
]
"sls-redis" => array:4 [
"host" => "r-xxxx.redis.rds.aliyuncs.com"
"password" => ""
"port" => "6379"
"database" => "0"
]
]
没有人反馈过这个问题,需要自己定位下。比如db不走env写死试下,排除vlucas/phpdotenv bug
OK、 我在跟一下
阿里云Redis什么版本?集群模式?
感谢回复、 你好 不是集群版本;
另外reload 后; 可以正常select 切库、 所有切库是支持的