webman是否有当前请求的全局缓存

miaoxiaoye

正常PHP-FPM模式下 static可以用做当前请求的全局缓存 如下列代码:

class Model {
    static $cache = null;

    public function getCache(){
        if(self::$cache === null) {
            ...
            self::$cache = ...;
        }
        return self::$cache;
    }

}

业务逻辑判断当前模型缓存是否存在 如果存在则直接返回模型缓存 不存在则从数据库或Redis中获取 不用每次从Redis或数据库中获取。

因为是FPM模式 所以业务完成后静态变量自动清空 不会相互影响 请问webman需要如何实现?

1090 1 1
1个回答

keytehu

缓存放request对象里就行了,请求结束,请求对象就释放了,和php-fpm一个效果

class Model {
    public function getCache(){
        $request = request();
        if(!isset($request->cache)) {
            ...
            $request->$cache = ...;
        }
        return $request->$cache;
    }

}
  • miaoxiaoye 2023-01-06

    这个代码不对吧 $request 这个是局部变量 这也不是给request()赋值啊 给局部变量复制 方法运行完 就会自动释放啊

  • keytehu 2023-01-06

    request()返回的是全局的request对象,给$request对象赋值就是给全局的$request对象赋值

  • miaoxiaoye 2023-01-06

    好的 那我试试 谢谢

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