Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii会话变量和Memcached_Yii_Memcached_Session Variables - Fatal编程技术网

Yii会话变量和Memcached

Yii会话变量和Memcached,yii,memcached,session-variables,Yii,Memcached,Session Variables,我正在使用Yii-PHP框架构建一个论坛网站。我还使用Memcached进行会话维护和存储一些数据对象 对于每个用户请求,我必须获取一些用户信息以检查某些内容(检查他是否是特定组的成员,以及其他检查) 所以我计划的两种方法是 1) 除了用户id之外,不要在会话中存储任何东西,在用户会话建立之后,从memcached获取对象并检查它-这里是一个用户对象和两个对memcached服务器的调用 (一个是会话调用,另一个是获取用户对象) 2) 使用setState方法在会话中存储所有必需的用户信息。成功

我正在使用Yii-PHP框架构建一个论坛网站。我还使用Memcached进行会话维护和存储一些数据对象

对于每个用户请求,我必须获取一些用户信息以检查某些内容(检查他是否是特定组的成员,以及其他检查)

所以我计划的两种方法是

1) 除了用户id之外,不要在会话中存储任何东西,在用户会话建立之后,从memcached获取对象并检查它-这里是一个用户对象和两个对memcached服务器的调用 (一个是会话调用,另一个是获取用户对象)

2) 使用setState方法在会话中存储所有必需的用户信息。成功登录后,用户从会话对象获取信息并进行检查。这里有两个用户对象,一个在memcached中,另一个在user session中(当然这同样存储在memcached中)。但我觉得,当会话通过一个调用建立时,我们可以获得用户的所有必需细节(真的是这样吗?)


不确定什么是最好的方法。感谢您在这方面的帮助。

从性能角度看,这没有什么区别,因为您还将会话保存在memached中(至少您是这么说的)。因此,将会话用于此类信息是最合乎逻辑的。否则,您必须为每个用户创建和存储唯一的缓存密钥—这是会话已经为您做的事情的翻版。

谢谢您的回复。我想我忘了提及我在memcached中存储用户对象的任何方式,原因还有其他(与其他用户比较,比如他们是朋友还是在同一组中)。但正如您所说的,似乎最好存储在会话对象中,即使该对象是重复的。我对几个用户进行了测试,发现会话对象存储在服务器中,不需要memcached来再次获取信息。如果我不在会话中存储,那么对memcached的调用就太多了。当然,正如你所说,这不会对性能产生任何影响。