控制器类中属性的安全问题

roczyl

比如我在控制器中设置一个类:
public $count=1;

如果
public function index(\support\Request $request)
{
View::assign('count',$this->count++);
return view('index/index');
}

这样所有客户端访问到的 $count 都是同一个变量,和我预想的只有静态属性才会共享不太一样。

那么如果我用
public $userinfo
保存当前用户信息,
那么在大量访问的情况下,会不会出现a用户和b用户信息错乱的情况呢?

733 1 0
1个回答

walkor

控制器实例默认是复用的,如果不习惯可以关闭复用。
参考手册 https://www.workerman.net/doc/webman/controller.html#%E6%8E%A7%E5%88%B6%E5%99%A8%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F

  • roczyl 2022-09-10

    如果复用的话,可以如何规避这些问题?
    感觉某些公用的属性复用的话,性能是不是会好一点?

  • walkor 2022-09-10

    请求不要更改控制器的属性就行了,控制器本身也不应该和某个请求耦合一起。
    关闭控制器复用的性能损失和业务比起来可以忽略不计。

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