【问题标题】:Yii Session Variables and MemcachedYii 会话变量和 Memcached
【发布时间】:2013-10-22 16:40:18
【问题描述】:

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

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

所以我计划的两种方法是

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

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

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

【问题讨论】:

    标签: yii memcached session-variables


    【解决方案1】:

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

    【讨论】:

    • 感谢迈克的回复。我想我忘了提及我出于其他原因将用户对象存储在 memcached 中的任何方式(与其他用户进行比较,例如他们是朋友还是在同一个组中)。但是正如您所说,即使对象是重复的,最好将其存储在会话对象中。我对几个用户进行了测试,我在服务器中看到了会话对象存储,并且不需要 memcached 来再次获取信息。如果我不在会话中存储,那么对 memcached 的调用就太多了。当然,正如您所说,它不会产生任何性能差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多