如何重置所有进程的静态属性?

原地起飞

问题描述

执行了refreshConfig 方法后 再请求getKey方法打印$configArr里面有时候有值有时候没值
重置属性有时管用有时不管用 是不是请求的某一个进程修改了 部分没修改呢 如果让所有进程都初始化成空呢

代码示例如下:

class SystemConfigService
{
    public static $configArr = [];
   public static function getKey($key){
        var_dump(self::$configArr);
        if(isset(self::$configArr[$key])){
            return self::$configArr[$key];
        }
        $redis = Redis::retRedis();
        $is = $redis->get(self::$key);
         self::$configArr[$key] = $is;
    }
   public static function refreshConfig()
    {
        self::$configArr = [];
        var_dump('已重置');
        return true;
    }
}
173 2 1
2个回答

原地起飞

@walkor

  • 暂无评论
walkor

进程间是隔离的,一个进程重置了类的静态属性,不影响其它进程。
你可以用channel插件做进程间通讯,让所有进程重置静态属性

https://www.workerman.net/plugin/18

🔝