webman redis db 问题

morris

bug描述

redis db切换错误

程序代码或配置

在cogfig/redis里面配置了 多个redis 链接截图

.env 文件
截图

业务中使用 配置的单独的 pixel 配置
截图

期待的结果及实际结果

期待结果 :
数据能写到 pixel 链接配置的 11号数据库

实际结果:
数据写到了 default 链接配置的 0 号数据库

重现bug的步骤

正常的启动:
php start.php start -d
数据写入正确;

bug复现的步骤
1、webman 所在服务器 直接重启
2、被 服务器配置的 crontab shell 脚本自动拉起
3、数据写入错误
4、执行 php start.php reload 后 问题解决、 数据写入正确

这是 shell 脚本
截图

系统环境及workerman/webman等具体版本

系统环境等信息:
截图

735 3 0
3个回答

jeyfang

调试看看通过shell启动时配置里读取的DB是哪个

  • morris 2022-11-17

    现在通过shell 启动 db读取正确

  • morris 2022-11-17

    就很奇怪、 如果说是 配置没读取正确的话 应该所有的都不正确才对、 但是host 又读取对了 能正确链接到redis 服务器、 就是db 错误

walkor

vlucas/phpdotenv 这个库在PHP TS版本(线程安全版本)可能会有bug,请使用NTS版本(非线程安全版本)。
当前php是什么版本可以通过执行 php -v 查看。

如果php线程版本没问题,尝试打印下 config('redis'); 看下配置是否正确。

  • morris 2022-11-21

    感谢老大的回复:
    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

  • morris 2022-11-21

    现在使用 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"
    ]
    ]

  • walkor 2022-11-21

    没有人反馈过这个问题,需要自己定位下。比如db不走env写死试下,排除vlucas/phpdotenv bug

  • morris 2022-11-24

    OK、 我在跟一下

wolfcode

阿里云Redis什么版本?集群模式?

集群模式下,原生Redis和Cluster client均不支持多数据库(DB)功能,只使用默认的0号数据库,也不支持SELECT命令。但您可以通过Proxy访问集群实例,支持多数据库(DB)功能,支持使用SELECT命令,集群版实例默认为256个DB。

  • morris 2022-11-24

    感谢回复、 你好 不是集群版本;
    另外reload 后; 可以正常select 切库、 所有切库是支持的

年代过于久远,无法发表回答
🔝