我现在使用了beforeAction和afterAction,然后我在自己写的某个方法里定义了一个变量,想要在afterAction里使用,如果我直接使用$this->val = xxx这样,那么所有这个线程的用户都共用这个变量了吧?我要如何定义某个用户自己的变量并在afterAction里使用呢?难道只能使用session?多几个变量感觉就是session滥用了
每个进程是独立的,每个进程当前只会处理一个人的,所以你的这个:那么所有这个线程的用户都共用这个变量了吧 是不成立的.webman现在是多进程阻塞模式,不是异步非阻塞模式 通俗点说,一个进程相当于一个门,所有人都在门口排队,大家必须等第一个进去,出来,紧跟着门口的第二个人才能进去.所以,只要你在beforeAction重置了值,不存在说第一个定义了变量,会被第二个人用到因为他们不是同时执行的,而是顺序执行的.
但是你忘记了一点,controller是驻留在内存的,$this->val的值也会被留下来了,我也测试了,a用户设置了一个变量,然后b用户未设置这个变量,但是b用户进去打印出来的是a用户设置的变量值
哦,你是说在beforeAction里重置这个值,这样应该是可以的
非常感谢,我想通了
咋感觉你没真想通呢!~ ^_^
可以保存到请求属性中,request()->val = xxx; 这样每次请求完都会回收request对象,用户之间互不影响
放到request()里的方法也不错
每个进程是独立的,每个进程当前只会处理一个人的,所以你的这个:那么所有这个线程的用户都共用这个变量了吧 是不成立的.webman现在是多进程阻塞模式,不是异步非阻塞模式
通俗点说,一个进程相当于一个门,所有人都在门口排队,大家必须等第一个进去,出来,紧跟着门口的第二个人才能进去.所以,只要你在beforeAction重置了值,不存在说第一个定义了变量,会被第二个人用到因为他们不是同时执行的,而是顺序执行的.
但是你忘记了一点,controller是驻留在内存的,$this->val的值也会被留下来了,我也测试了,a用户设置了一个变量,然后b用户未设置这个变量,但是b用户进去打印出来的是a用户设置的变量值
哦,你是说在beforeAction里重置这个值,这样应该是可以的
非常感谢,我想通了
咋感觉你没真想通呢!~ ^_^
可以保存到请求属性中,request()->val = xxx; 这样每次请求完都会回收request对象,用户之间互不影响
放到request()里的方法也不错