【问题标题】:Store session in MemCache instead of default session storage in Yii 1.x在 MemCache 中存储会话而不是 Yii 1.x 中的默认会话存储
【发布时间】:2014-10-09 09:51:46
【问题描述】:

这是我在 Yii 1.x 应用程序中添加到 config/main.php 的代码:

   'mCache' => array(
        'class' => 'system.caching.CMemCache',
        'useMemcached'=>true,
        'keyPrefix'=>'',
        'hashKey'=>false,
        'serializer'=>false,
        'servers' => array(
            array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 10000)
        ),
    ),

    'session' => array(
        'sessionName' => 'PHPSESSID',
        'class' => 'CCacheHttpSession',
        'autoStart' => true,
        'cacheID' => 'mCache',
        'cookieMode' => 'only',
        'timeout' => 1200
    ),

接下来我应该怎么做,强制 Yii 使用CMemCache,而不是默认的会话存储?

【问题讨论】:

  • 由于您是 Stack Overflow 的新手,因此请在此处提问之前付出一些努力。谷歌搜索,阅读文档等。不要只是问问题,可以在五分钟内回答或通过阅读官方文档的第一段来回答。如果您自己没有做某事,您的问题将被否决、关闭或根本没有回答。
  • trejder 我知道我是堆栈溢出的新手。这并不意味着我没有努力在 google 或其他资源上进行搜索。我对 memcache 中的存储有些困惑。所以这就是我问你的原因。我的意图是在五分钟内得到答案。如果是这是一个愚蠢的问题,但对我来说是新的。所以我期待好的答案。顺便感谢您对我的问题的回答和努力。我会在下一次愚蠢之前照顾好。谢谢
  • 不要误会我的意思。我不是故意的,你的问题很愚蠢。没门。我只是想指出你,你应该展示你的努力。您没有在问题本身中写任何关于您为解决问题所做的工作。就这样。不要把这个当成个人。我只是想避免,有人会结束你的问题。顺便说一句:如果您想在这里表达您的“感谢”,只需点赞答案、评论或问题! :]

标签: session yii memcached


【解决方案1】:

我知道这个答案很旧,但这个配置有效

    'memcacheConn'=>array(
        'class'=>'CMemCache',
        'servers'=>array(
            array(
                'host'=>'172.17.0.1',
                'port'=>11211,
                //'weight'=>60,
            ),
        ),
    ),
    'session' => array(
        'class' => 'CCacheHttpSession',
        'autoStart' => true,
        'cacheID' => 'memcacheConn',
        'cookieMode' => 'allow',
        'sessionName' => 'MYSSIONNAME',

    ),

【讨论】:

    【解决方案2】:

    你读过 Yii 1.x API 文档中对CMemCache 的介绍吗?我想你没有。在本文档的第一段中,您有一个示例,如何在 Yii 1.x 中使用 CMemCache

    在配置文件的session 键中将'class'=>'CCacheHttpSession' 更改为'class'=>'CMemCache'。而且您不必像在示例 (mCache) 中那样将 CMemCache 注册为单独的组件。可以直接在session配置键中配置。

    来自Yii 1.x API documentation的例子:

    array
    (
        'components'=>array
        (
            'cache'=>array
            (
                'class'=>'CMemCache',
                'servers'=>array
                (
                    array
                    (
                        'host'=>'server1',
                        'port'=>11211,
                        'weight'=>60,
                    ),
                    array
                    (
                        'host'=>'server2',
                        'port'=>11211,
                        'weight'=>40,
                    )
                )
            )
        )
    )
    

    【讨论】:

    • 只是将“您的会话”中的 Change 'class'=>'CCacheHttpSession' 替换为 'class'=>'CMemCache' 不起作用。 Yii 需要一个会话对象,而不是缓存对象。
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 2014-01-29
    • 2011-04-22
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多