在Yii 1.x中将会话存储在MemCache中而不是默认会话存储中

时间:2014-10-09 09:51:47

标签: session yii memcached

这是我在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而不是默认会话存储?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

    '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',

    ),